authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-03-19 12:46:38+01:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-03-30 20:50:48-04:00
logeb723a407073592db858cf14bece8643bec2a771
tree504be71818a397d2b8ce07aa26718b5c7a5b7ef5
parent17673dcd6e3ffeb25fc9dc1cfc72334ab4e71b37

Update uses of `@fieldParentPtr` to use RLS


49 files changed, 494 insertions(+), 539 deletions(-)

doc/langref.html.in+2-3
......@@ -3107,7 +3107,7 @@ test "struct namespaced variable" {
31073107// struct field order is determined by the compiler for optimal performance.
31083108// however, you can still calculate a struct base pointer given a field pointer:
31093109fn setYBasedOnX(x: *f32, y: f32) void {
3110 const point = @fieldParentPtr(Point, "x", x);
3110 const point: *Point = @fieldParentPtr("x", x);
31113111 point.y = y;
31123112}
31133113test "field parent pointer" {
......@@ -8757,8 +8757,7 @@ test "decl access by string" {
87578757 {#header_close#}
87588758
87598759 {#header_open|@fieldParentPtr#}
8760 <pre>{#syntax#}@fieldParentPtr(comptime ParentType: type, comptime field_name: []const u8,
8761 field_ptr: *T) *ParentType{#endsyntax#}</pre>
8760 <pre>{#syntax#}@fieldParentPtr(comptime field_name: []const u8, field_ptr: *T) anytype{#endsyntax#}</pre>
87628761 <p>
87638762 Given a pointer to a field, returns the base pointer of a struct.
87648763 </p>
lib/compiler/aro/aro/pragmas/gcc.zig+6-6
......@@ -37,18 +37,18 @@ const Directive = enum {
3737};
3838
3939fn beforePreprocess(pragma: *Pragma, comp: *Compilation) void {
40 var self = @fieldParentPtr(*GCC, "pragma", pragma);
40 var self: *GCC = @fieldParentPtr("pragma", pragma);
4141 self.original_options = comp.diagnostics.options;
4242}
4343
4444fn beforeParse(pragma: *Pragma, comp: *Compilation) void {
45 var self = @fieldParentPtr(*GCC, "pragma", pragma);
45 var self: *GCC = @fieldParentPtr("pragma", pragma);
4646 comp.diagnostics.options = self.original_options;
4747 self.options_stack.items.len = 0;
4848}
4949
5050fn afterParse(pragma: *Pragma, comp: *Compilation) void {
51 var self = @fieldParentPtr(*GCC, "pragma", pragma);
51 var self: *GCC = @fieldParentPtr("pragma", pragma);
5252 comp.diagnostics.options = self.original_options;
5353 self.options_stack.items.len = 0;
5454}
......@@ -60,7 +60,7 @@ pub fn init(allocator: mem.Allocator) !*Pragma {
6060}
6161
6262fn deinit(pragma: *Pragma, comp: *Compilation) void {
63 var self = @fieldParentPtr(*GCC, "pragma", pragma);
63 var self: *GCC = @fieldParentPtr("pragma", pragma);
6464 self.options_stack.deinit(comp.gpa);
6565 comp.gpa.destroy(self);
6666}
......@@ -108,7 +108,7 @@ fn diagnosticHandler(self: *GCC, pp: *Preprocessor, start_idx: TokenIndex) Pragm
108108}
109109
110110fn preprocessorHandler(pragma: *Pragma, pp: *Preprocessor, start_idx: TokenIndex) Pragma.Error!void {
111 var self = @fieldParentPtr(*GCC, "pragma", pragma);
111 var self: *GCC = @fieldParentPtr("pragma", pragma);
112112 const directive_tok = pp.tokens.get(start_idx + 1);
113113 if (directive_tok.id == .nl) return;
114114
......@@ -174,7 +174,7 @@ fn preprocessorHandler(pragma: *Pragma, pp: *Preprocessor, start_idx: TokenIndex
174174}
175175
176176fn parserHandler(pragma: *Pragma, p: *Parser, start_idx: TokenIndex) Compilation.Error!void {
177 var self = @fieldParentPtr(*GCC, "pragma", pragma);
177 var self: *GCC = @fieldParentPtr("pragma", pragma);
178178 const directive_tok = p.pp.tokens.get(start_idx + 1);
179179 if (directive_tok.id == .nl) return;
180180 const name = p.pp.expandedSlice(directive_tok);
lib/compiler/aro/aro/pragmas/message.zig+1-1
......@@ -22,7 +22,7 @@ pub fn init(allocator: mem.Allocator) !*Pragma {
2222}
2323
2424fn deinit(pragma: *Pragma, comp: *Compilation) void {
25 const self = @fieldParentPtr(*Message, "pragma", pragma);
25 const self: *Message = @fieldParentPtr("pragma", pragma);
2626 comp.gpa.destroy(self);
2727}
2828
lib/compiler/aro/aro/pragmas/once.zig+3-3
......@@ -27,18 +27,18 @@ pub fn init(allocator: mem.Allocator) !*Pragma {
2727}
2828
2929fn afterParse(pragma: *Pragma, _: *Compilation) void {
30 var self = @fieldParentPtr(*Once, "pragma", pragma);
30 var self: *Once = @fieldParentPtr("pragma", pragma);
3131 self.pragma_once.clearRetainingCapacity();
3232}
3333
3434fn deinit(pragma: *Pragma, comp: *Compilation) void {
35 var self = @fieldParentPtr(*Once, "pragma", pragma);
35 var self: *Once = @fieldParentPtr("pragma", pragma);
3636 self.pragma_once.deinit();
3737 comp.gpa.destroy(self);
3838}
3939
4040fn preprocessorHandler(pragma: *Pragma, pp: *Preprocessor, start_idx: TokenIndex) Pragma.Error!void {
41 var self = @fieldParentPtr(*Once, "pragma", pragma);
41 var self: *Once = @fieldParentPtr("pragma", pragma);
4242 const name_tok = pp.tokens.get(start_idx);
4343 const next = pp.tokens.get(start_idx + 1);
4444 if (next.id != .nl) {
lib/compiler/aro/aro/pragmas/pack.zig+2-2
......@@ -24,13 +24,13 @@ pub fn init(allocator: mem.Allocator) !*Pragma {
2424}
2525
2626fn deinit(pragma: *Pragma, comp: *Compilation) void {
27 var self = @fieldParentPtr(*Pack, "pragma", pragma);
27 var self: *Pack = @fieldParentPtr("pragma", pragma);
2828 self.stack.deinit(comp.gpa);
2929 comp.gpa.destroy(self);
3030}
3131
3232fn parserHandler(pragma: *Pragma, p: *Parser, start_idx: TokenIndex) Compilation.Error!void {
33 var pack = @fieldParentPtr(*Pack, "pragma", pragma);
33 var pack: *Pack = @fieldParentPtr("pragma", pragma);
3434 var idx = start_idx + 1;
3535 const l_paren = p.pp.tokens.get(idx);
3636 if (l_paren.id != .l_paren) {
lib/compiler/aro/backend/Object.zig+5-5
......@@ -16,7 +16,7 @@ pub fn create(gpa: Allocator, target: std.Target) !*Object {
1616
1717pub fn deinit(obj: *Object) void {
1818 switch (obj.format) {
19 .elf => @fieldParentPtr(Elf, "obj", obj).deinit(),
19 .elf => @as(*Elf, @fieldParentPtr("obj", obj)).deinit(),
2020 else => unreachable,
2121 }
2222}
......@@ -32,7 +32,7 @@ pub const Section = union(enum) {
3232
3333pub fn getSection(obj: *Object, section: Section) !*std.ArrayList(u8) {
3434 switch (obj.format) {
35 .elf => return @fieldParentPtr(Elf, "obj", obj).getSection(section),
35 .elf => return @as(*Elf, @fieldParentPtr("obj", obj)).getSection(section),
3636 else => unreachable,
3737 }
3838}
......@@ -53,21 +53,21 @@ pub fn declareSymbol(
5353 size: u64,
5454) ![]const u8 {
5555 switch (obj.format) {
56 .elf => return @fieldParentPtr(Elf, "obj", obj).declareSymbol(section, name, linkage, @"type", offset, size),
56 .elf => return @as(*Elf, @fieldParentPtr("obj", obj)).declareSymbol(section, name, linkage, @"type", offset, size),
5757 else => unreachable,
5858 }
5959}
6060
6161pub fn addRelocation(obj: *Object, name: []const u8, section: Section, address: u64, addend: i64) !void {
6262 switch (obj.format) {
63 .elf => return @fieldParentPtr(Elf, "obj", obj).addRelocation(name, section, address, addend),
63 .elf => return @as(*Elf, @fieldParentPtr("obj", obj)).addRelocation(name, section, address, addend),
6464 else => unreachable,
6565 }
6666}
6767
6868pub fn finish(obj: *Object, file: std.fs.File) !void {
6969 switch (obj.format) {
70 .elf => return @fieldParentPtr(Elf, "obj", obj).finish(file),
70 .elf => return @as(*Elf, @fieldParentPtr("obj", obj)).finish(file),
7171 else => unreachable,
7272 }
7373}
lib/compiler/aro_translate_c.zig+10-10
......@@ -1098,13 +1098,13 @@ pub fn ScopeExtra(comptime ScopeExtraContext: type, comptime ScopeExtraType: typ
10981098 }
10991099 };
11001100
1101 pub fn findBlockScope(inner: *ScopeExtraScope, c: *ScopeExtraContext) !*ScopeExtraScope.Block {
1101 pub fn findBlockScope(inner: *ScopeExtraScope, c: *ScopeExtraContext) !*Block {
11021102 var scope = inner;
11031103 while (true) {
11041104 switch (scope.id) {
11051105 .root => unreachable,
1106 .block => return @fieldParentPtr(*Block, "base", scope),
1107 .condition => return @fieldParentPtr(*Condition, "base", scope).getBlockScope(c),
1106 .block => return @fieldParentPtr("base", scope),
1107 .condition => return @as(*Condition, @fieldParentPtr("base", scope)).getBlockScope(c),
11081108 else => scope = scope.parent.?,
11091109 }
11101110 }
......@@ -1116,7 +1116,7 @@ pub fn ScopeExtra(comptime ScopeExtraContext: type, comptime ScopeExtraType: typ
11161116 switch (scope.id) {
11171117 .root => unreachable,
11181118 .block => {
1119 const block = @fieldParentPtr(*Block, "base", scope);
1119 const block: *Block = @fieldParentPtr("base", scope);
11201120 if (block.return_type) |ty| return ty;
11211121 scope = scope.parent.?;
11221122 },
......@@ -1128,15 +1128,15 @@ pub fn ScopeExtra(comptime ScopeExtraContext: type, comptime ScopeExtraType: typ
11281128 pub fn getAlias(scope: *ScopeExtraScope, name: []const u8) []const u8 {
11291129 return switch (scope.id) {
11301130 .root => return name,
1131 .block => @fieldParentPtr(*Block, "base", scope).getAlias(name),
1131 .block => @as(*Block, @fieldParentPtr("base", scope)).getAlias(name),
11321132 .loop, .do_loop, .condition => scope.parent.?.getAlias(name),
11331133 };
11341134 }
11351135
11361136 pub fn contains(scope: *ScopeExtraScope, name: []const u8) bool {
11371137 return switch (scope.id) {
1138 .root => @fieldParentPtr(*Root, "base", scope).contains(name),
1139 .block => @fieldParentPtr(*Block, "base", scope).contains(name),
1138 .root => @as(*Root, @fieldParentPtr("base", scope)).contains(name),
1139 .block => @as(*Block, @fieldParentPtr("base", scope)).contains(name),
11401140 .loop, .do_loop, .condition => scope.parent.?.contains(name),
11411141 };
11421142 }
......@@ -1158,11 +1158,11 @@ pub fn ScopeExtra(comptime ScopeExtraContext: type, comptime ScopeExtraType: typ
11581158 while (true) {
11591159 switch (scope.id) {
11601160 .root => {
1161 const root = @fieldParentPtr(*Root, "base", scope);
1161 const root: *Root = @fieldParentPtr("base", scope);
11621162 return root.nodes.append(node);
11631163 },
11641164 .block => {
1165 const block = @fieldParentPtr(*Block, "base", scope);
1165 const block: *Block = @fieldParentPtr("base", scope);
11661166 return block.statements.append(node);
11671167 },
11681168 else => scope = scope.parent.?,
......@@ -1184,7 +1184,7 @@ pub fn ScopeExtra(comptime ScopeExtraContext: type, comptime ScopeExtraType: typ
11841184 switch (scope.id) {
11851185 .root => return,
11861186 .block => {
1187 const block = @fieldParentPtr(*Block, "base", scope);
1187 const block: *Block = @fieldParentPtr("base", scope);
11881188 if (block.variable_discards.get(name)) |discard| {
11891189 discard.data.should_skip = true;
11901190 return;
lib/compiler/aro_translate_c/ast.zig+8-8
......@@ -409,7 +409,7 @@ pub const Node = extern union {
409409 return null;
410410
411411 if (self.ptr_otherwise.tag == t)
412 return @alignCast(@fieldParentPtr(*align(1) t.Type(), "base", self.ptr_otherwise));
412 return @alignCast(@fieldParentPtr("base", self.ptr_otherwise));
413413
414414 return null;
415415 }
......@@ -1220,7 +1220,7 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex {
12201220 });
12211221 },
12221222 .pub_var_simple, .var_simple => {
1223 const payload = @as(*Payload.SimpleVarDecl, @alignCast(@fieldParentPtr(*align(1) Payload.SimpleVarDecl, "base", node.ptr_otherwise))).data;
1223 const payload = @as(*Payload.SimpleVarDecl, @alignCast(@fieldParentPtr("base", node.ptr_otherwise))).data;
12241224 if (node.tag() == .pub_var_simple) _ = try c.addToken(.keyword_pub, "pub");
12251225 const const_tok = try c.addToken(.keyword_const, "const");
12261226 _ = try c.addIdentifier(payload.name);
......@@ -1293,7 +1293,7 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex {
12931293 },
12941294 .var_decl => return renderVar(c, node),
12951295 .arg_redecl, .alias => {
1296 const payload = @as(*Payload.ArgRedecl, @alignCast(@fieldParentPtr(*align(1) Payload.ArgRedecl, "base", node.ptr_otherwise))).data;
1296 const payload = @as(*Payload.ArgRedecl, @alignCast(@fieldParentPtr("base", node.ptr_otherwise))).data;
12971297 if (node.tag() == .alias) _ = try c.addToken(.keyword_pub, "pub");
12981298 const mut_tok = if (node.tag() == .alias)
12991299 try c.addToken(.keyword_const, "const")
......@@ -1492,7 +1492,7 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex {
14921492 });
14931493 },
14941494 .c_pointer, .single_pointer => {
1495 const payload = @as(*Payload.Pointer, @alignCast(@fieldParentPtr(*align(1) Payload.Pointer, "base", node.ptr_otherwise))).data;
1495 const payload = @as(*Payload.Pointer, @alignCast(@fieldParentPtr("base", node.ptr_otherwise))).data;
14961496
14971497 const asterisk = if (node.tag() == .single_pointer)
14981498 try c.addToken(.asterisk, "*")
......@@ -2085,7 +2085,7 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex {
20852085}
20862086
20872087fn renderRecord(c: *Context, node: Node) !NodeIndex {
2088 const payload = @as(*Payload.Record, @alignCast(@fieldParentPtr(*align(1) Payload.Record, "base", node.ptr_otherwise))).data;
2088 const payload = @as(*Payload.Record, @alignCast(@fieldParentPtr("base", node.ptr_otherwise))).data;
20892089 if (payload.layout == .@"packed")
20902090 _ = try c.addToken(.keyword_packed, "packed")
20912091 else if (payload.layout == .@"extern")
......@@ -2487,7 +2487,7 @@ fn renderNodeGrouped(c: *Context, node: Node) !NodeIndex {
24872487}
24882488
24892489fn renderPrefixOp(c: *Context, node: Node, tag: std.zig.Ast.Node.Tag, tok_tag: TokenTag, bytes: []const u8) !NodeIndex {
2490 const payload = @as(*Payload.UnOp, @alignCast(@fieldParentPtr(*align(1) Payload.UnOp, "base", node.ptr_otherwise))).data;
2490 const payload = @as(*Payload.UnOp, @alignCast(@fieldParentPtr("base", node.ptr_otherwise))).data;
24912491 return c.addNode(.{
24922492 .tag = tag,
24932493 .main_token = try c.addToken(tok_tag, bytes),
......@@ -2499,7 +2499,7 @@ fn renderPrefixOp(c: *Context, node: Node, tag: std.zig.Ast.Node.Tag, tok_tag: T
24992499}
25002500
25012501fn renderBinOpGrouped(c: *Context, node: Node, tag: std.zig.Ast.Node.Tag, tok_tag: TokenTag, bytes: []const u8) !NodeIndex {
2502 const payload = @as(*Payload.BinOp, @alignCast(@fieldParentPtr(*align(1) Payload.BinOp, "base", node.ptr_otherwise))).data;
2502 const payload = @as(*Payload.BinOp, @alignCast(@fieldParentPtr("base", node.ptr_otherwise))).data;
25032503 const lhs = try renderNodeGrouped(c, payload.lhs);
25042504 return c.addNode(.{
25052505 .tag = tag,
......@@ -2512,7 +2512,7 @@ fn renderBinOpGrouped(c: *Context, node: Node, tag: std.zig.Ast.Node.Tag, tok_ta
25122512}
25132513
25142514fn renderBinOp(c: *Context, node: Node, tag: std.zig.Ast.Node.Tag, tok_tag: TokenTag, bytes: []const u8) !NodeIndex {
2515 const payload = @as(*Payload.BinOp, @alignCast(@fieldParentPtr(*align(1) Payload.BinOp, "base", node.ptr_otherwise))).data;
2515 const payload = @as(*Payload.BinOp, @alignCast(@fieldParentPtr("base", node.ptr_otherwise))).data;
25162516 const lhs = try renderNode(c, payload.lhs);
25172517 return c.addNode(.{
25182518 .tag = tag,
lib/compiler/resinator/ast.zig+85-88
......@@ -19,7 +19,7 @@ pub const Tree = struct {
1919 }
2020
2121 pub fn root(self: *Tree) *Node.Root {
22 return @fieldParentPtr(Node.Root, "base", self.node);
22 return @alignCast(@fieldParentPtr("base", self.node));
2323 }
2424
2525 pub fn dump(self: *Tree, writer: anytype) @TypeOf(writer).Error!void {
......@@ -174,7 +174,7 @@ pub const Node = struct {
174174
175175 pub fn cast(base: *Node, comptime id: Id) ?*id.Type() {
176176 if (base.id == id) {
177 return @fieldParentPtr(id.Type(), "base", base);
177 return @alignCast(@fieldParentPtr("base", base));
178178 }
179179 return null;
180180 }
......@@ -461,7 +461,7 @@ pub const Node = struct {
461461 pub fn isNumberExpression(node: *const Node) bool {
462462 switch (node.id) {
463463 .literal => {
464 const literal = @fieldParentPtr(Node.Literal, "base", node);
464 const literal: *const Node.Literal = @alignCast(@fieldParentPtr("base", node));
465465 return switch (literal.token.id) {
466466 .number => true,
467467 else => false,
......@@ -475,7 +475,7 @@ pub const Node = struct {
475475 pub fn isStringLiteral(node: *const Node) bool {
476476 switch (node.id) {
477477 .literal => {
478 const literal = @fieldParentPtr(Node.Literal, "base", node);
478 const literal: *const Node.Literal = @alignCast(@fieldParentPtr("base", node));
479479 return switch (literal.token.id) {
480480 .quoted_ascii_string, .quoted_wide_string => true,
481481 else => false,
......@@ -489,105 +489,103 @@ pub const Node = struct {
489489 switch (node.id) {
490490 .root => unreachable,
491491 .resource_external => {
492 const casted = @fieldParentPtr(Node.ResourceExternal, "base", node);
492 const casted: *const Node.ResourceExternal = @alignCast(@fieldParentPtr("base", node));
493493 return casted.id;
494494 },
495495 .resource_raw_data => {
496 const casted = @fieldParentPtr(Node.ResourceRawData, "base", node);
496 const casted: *const Node.ResourceRawData = @alignCast(@fieldParentPtr("base", node));
497497 return casted.id;
498498 },
499499 .literal => {
500 const casted = @fieldParentPtr(Node.Literal, "base", node);
500 const casted: *const Node.Literal = @alignCast(@fieldParentPtr("base", node));
501501 return casted.token;
502502 },
503503 .binary_expression => {
504 const casted = @fieldParentPtr(Node.BinaryExpression, "base", node);
504 const casted: *const Node.BinaryExpression = @alignCast(@fieldParentPtr("base", node));
505505 return casted.left.getFirstToken();
506506 },
507507 .grouped_expression => {
508 const casted = @fieldParentPtr(Node.GroupedExpression, "base", node);
508 const casted: *const Node.GroupedExpression = @alignCast(@fieldParentPtr("base", node));
509509 return casted.open_token;
510510 },
511511 .not_expression => {
512 const casted = @fieldParentPtr(Node.NotExpression, "base", node);
512 const casted: *const Node.NotExpression = @alignCast(@fieldParentPtr("base", node));
513513 return casted.not_token;
514514 },
515515 .accelerators => {
516 const casted = @fieldParentPtr(Node.Accelerators, "base", node);
516 const casted: *const Node.Accelerators = @alignCast(@fieldParentPtr("base", node));
517517 return casted.id;
518518 },
519519 .accelerator => {
520 const casted = @fieldParentPtr(Node.Accelerator, "base", node);
520 const casted: *const Node.Accelerator = @alignCast(@fieldParentPtr("base", node));
521521 return casted.event.getFirstToken();
522522 },
523523 .dialog => {
524 const casted = @fieldParentPtr(Node.Dialog, "base", node);
524 const casted: *const Node.Dialog = @alignCast(@fieldParentPtr("base", node));
525525 return casted.id;
526526 },
527527 .control_statement => {
528 const casted = @fieldParentPtr(Node.ControlStatement, "base", node);
528 const casted: *const Node.ControlStatement = @alignCast(@fieldParentPtr("base", node));
529529 return casted.type;
530530 },
531531 .toolbar => {
532 const casted = @fieldParentPtr(Node.Toolbar, "base", node);
532 const casted: *const Node.Toolbar = @alignCast(@fieldParentPtr("base", node));
533533 return casted.id;
534534 },
535535 .menu => {
536 const casted = @fieldParentPtr(Node.Menu, "base", node);
536 const casted: *const Node.Menu = @alignCast(@fieldParentPtr("base", node));
537537 return casted.id;
538538 },
539539 inline .menu_item, .menu_item_separator, .menu_item_ex => |menu_item_type| {
540 const node_type = menu_item_type.Type();
541 const casted = @fieldParentPtr(node_type, "base", node);
540 const casted: *const menu_item_type.Type() = @alignCast(@fieldParentPtr("base", node));
542541 return casted.menuitem;
543542 },
544543 inline .popup, .popup_ex => |popup_type| {
545 const node_type = popup_type.Type();
546 const casted = @fieldParentPtr(node_type, "base", node);
544 const casted: *const popup_type.Type() = @alignCast(@fieldParentPtr("base", node));
547545 return casted.popup;
548546 },
549547 .version_info => {
550 const casted = @fieldParentPtr(Node.VersionInfo, "base", node);
548 const casted: *const Node.VersionInfo = @alignCast(@fieldParentPtr("base", node));
551549 return casted.id;
552550 },
553551 .version_statement => {
554 const casted = @fieldParentPtr(Node.VersionStatement, "base", node);
552 const casted: *const Node.VersionStatement = @alignCast(@fieldParentPtr("base", node));
555553 return casted.type;
556554 },
557555 .block => {
558 const casted = @fieldParentPtr(Node.Block, "base", node);
556 const casted: *const Node.Block = @alignCast(@fieldParentPtr("base", node));
559557 return casted.identifier;
560558 },
561559 .block_value => {
562 const casted = @fieldParentPtr(Node.BlockValue, "base", node);
560 const casted: *const Node.BlockValue = @alignCast(@fieldParentPtr("base", node));
563561 return casted.identifier;
564562 },
565563 .block_value_value => {
566 const casted = @fieldParentPtr(Node.BlockValueValue, "base", node);
564 const casted: *const Node.BlockValueValue = @alignCast(@fieldParentPtr("base", node));
567565 return casted.expression.getFirstToken();
568566 },
569567 .string_table => {
570 const casted = @fieldParentPtr(Node.StringTable, "base", node);
568 const casted: *const Node.StringTable = @alignCast(@fieldParentPtr("base", node));
571569 return casted.type;
572570 },
573571 .string_table_string => {
574 const casted = @fieldParentPtr(Node.StringTableString, "base", node);
572 const casted: *const Node.StringTableString = @alignCast(@fieldParentPtr("base", node));
575573 return casted.id.getFirstToken();
576574 },
577575 .language_statement => {
578 const casted = @fieldParentPtr(Node.LanguageStatement, "base", node);
576 const casted: *const Node.LanguageStatement = @alignCast(@fieldParentPtr("base", node));
579577 return casted.language_token;
580578 },
581579 .font_statement => {
582 const casted = @fieldParentPtr(Node.FontStatement, "base", node);
580 const casted: *const Node.FontStatement = @alignCast(@fieldParentPtr("base", node));
583581 return casted.identifier;
584582 },
585583 .simple_statement => {
586 const casted = @fieldParentPtr(Node.SimpleStatement, "base", node);
584 const casted: *const Node.SimpleStatement = @alignCast(@fieldParentPtr("base", node));
587585 return casted.identifier;
588586 },
589587 .invalid => {
590 const casted = @fieldParentPtr(Node.Invalid, "base", node);
588 const casted: *const Node.Invalid = @alignCast(@fieldParentPtr("base", node));
591589 return casted.context[0];
592590 },
593591 }
......@@ -597,44 +595,44 @@ pub const Node = struct {
597595 switch (node.id) {
598596 .root => unreachable,
599597 .resource_external => {
600 const casted = @fieldParentPtr(Node.ResourceExternal, "base", node);
598 const casted: *const Node.ResourceExternal = @alignCast(@fieldParentPtr("base", node));
601599 return casted.filename.getLastToken();
602600 },
603601 .resource_raw_data => {
604 const casted = @fieldParentPtr(Node.ResourceRawData, "base", node);
602 const casted: *const Node.ResourceRawData = @alignCast(@fieldParentPtr("base", node));
605603 return casted.end_token;
606604 },
607605 .literal => {
608 const casted = @fieldParentPtr(Node.Literal, "base", node);
606 const casted: *const Node.Literal = @alignCast(@fieldParentPtr("base", node));
609607 return casted.token;
610608 },
611609 .binary_expression => {
612 const casted = @fieldParentPtr(Node.BinaryExpression, "base", node);
610 const casted: *const Node.BinaryExpression = @alignCast(@fieldParentPtr("base", node));
613611 return casted.right.getLastToken();
614612 },
615613 .grouped_expression => {
616 const casted = @fieldParentPtr(Node.GroupedExpression, "base", node);
614 const casted: *const Node.GroupedExpression = @alignCast(@fieldParentPtr("base", node));
617615 return casted.close_token;
618616 },
619617 .not_expression => {
620 const casted = @fieldParentPtr(Node.NotExpression, "base", node);
618 const casted: *const Node.NotExpression = @alignCast(@fieldParentPtr("base", node));
621619 return casted.number_token;
622620 },
623621 .accelerators => {
624 const casted = @fieldParentPtr(Node.Accelerators, "base", node);
622 const casted: *const Node.Accelerators = @alignCast(@fieldParentPtr("base", node));
625623 return casted.end_token;
626624 },
627625 .accelerator => {
628 const casted = @fieldParentPtr(Node.Accelerator, "base", node);
626 const casted: *const Node.Accelerator = @alignCast(@fieldParentPtr("base", node));
629627 if (casted.type_and_options.len > 0) return casted.type_and_options[casted.type_and_options.len - 1];
630628 return casted.idvalue.getLastToken();
631629 },
632630 .dialog => {
633 const casted = @fieldParentPtr(Node.Dialog, "base", node);
631 const casted: *const Node.Dialog = @alignCast(@fieldParentPtr("base", node));
634632 return casted.end_token;
635633 },
636634 .control_statement => {
637 const casted = @fieldParentPtr(Node.ControlStatement, "base", node);
635 const casted: *const Node.ControlStatement = @alignCast(@fieldParentPtr("base", node));
638636 if (casted.extra_data_end) |token| return token;
639637 if (casted.help_id) |help_id_node| return help_id_node.getLastToken();
640638 if (casted.exstyle) |exstyle_node| return exstyle_node.getLastToken();
......@@ -647,80 +645,79 @@ pub const Node = struct {
647645 return casted.height.getLastToken();
648646 },
649647 .toolbar => {
650 const casted = @fieldParentPtr(Node.Toolbar, "base", node);
648 const casted: *const Node.Toolbar = @alignCast(@fieldParentPtr("base", node));
651649 return casted.end_token;
652650 },
653651 .menu => {
654 const casted = @fieldParentPtr(Node.Menu, "base", node);
652 const casted: *const Node.Menu = @alignCast(@fieldParentPtr("base", node));
655653 return casted.end_token;
656654 },
657655 .menu_item => {
658 const casted = @fieldParentPtr(Node.MenuItem, "base", node);
656 const casted: *const Node.MenuItem = @alignCast(@fieldParentPtr("base", node));
659657 if (casted.option_list.len > 0) return casted.option_list[casted.option_list.len - 1];
660658 return casted.result.getLastToken();
661659 },
662660 .menu_item_separator => {
663 const casted = @fieldParentPtr(Node.MenuItemSeparator, "base", node);
661 const casted: *const Node.MenuItemSeparator = @alignCast(@fieldParentPtr("base", node));
664662 return casted.separator;
665663 },
666664 .menu_item_ex => {
667 const casted = @fieldParentPtr(Node.MenuItemEx, "base", node);
665 const casted: *const Node.MenuItemEx = @alignCast(@fieldParentPtr("base", node));
668666 if (casted.state) |state_node| return state_node.getLastToken();
669667 if (casted.type) |type_node| return type_node.getLastToken();
670668 if (casted.id) |id_node| return id_node.getLastToken();
671669 return casted.text;
672670 },
673671 inline .popup, .popup_ex => |popup_type| {
674 const node_type = popup_type.Type();
675 const casted = @fieldParentPtr(node_type, "base", node);
672 const casted: *const popup_type.Type() = @alignCast(@fieldParentPtr("base", node));
676673 return casted.end_token;
677674 },
678675 .version_info => {
679 const casted = @fieldParentPtr(Node.VersionInfo, "base", node);
676 const casted: *const Node.VersionInfo = @alignCast(@fieldParentPtr("base", node));
680677 return casted.end_token;
681678 },
682679 .version_statement => {
683 const casted = @fieldParentPtr(Node.VersionStatement, "base", node);
680 const casted: *const Node.VersionStatement = @alignCast(@fieldParentPtr("base", node));
684681 return casted.parts[casted.parts.len - 1].getLastToken();
685682 },
686683 .block => {
687 const casted = @fieldParentPtr(Node.Block, "base", node);
684 const casted: *const Node.Block = @alignCast(@fieldParentPtr("base", node));
688685 return casted.end_token;
689686 },
690687 .block_value => {
691 const casted = @fieldParentPtr(Node.BlockValue, "base", node);
688 const casted: *const Node.BlockValue = @alignCast(@fieldParentPtr("base", node));
692689 if (casted.values.len > 0) return casted.values[casted.values.len - 1].getLastToken();
693690 return casted.key;
694691 },
695692 .block_value_value => {
696 const casted = @fieldParentPtr(Node.BlockValueValue, "base", node);
693 const casted: *const Node.BlockValueValue = @alignCast(@fieldParentPtr("base", node));
697694 return casted.expression.getLastToken();
698695 },
699696 .string_table => {
700 const casted = @fieldParentPtr(Node.StringTable, "base", node);
697 const casted: *const Node.StringTable = @alignCast(@fieldParentPtr("base", node));
701698 return casted.end_token;
702699 },
703700 .string_table_string => {
704 const casted = @fieldParentPtr(Node.StringTableString, "base", node);
701 const casted: *const Node.StringTableString = @alignCast(@fieldParentPtr("base", node));
705702 return casted.string;
706703 },
707704 .language_statement => {
708 const casted = @fieldParentPtr(Node.LanguageStatement, "base", node);
705 const casted: *const Node.LanguageStatement = @alignCast(@fieldParentPtr("base", node));
709706 return casted.sublanguage_id.getLastToken();
710707 },
711708 .font_statement => {
712 const casted = @fieldParentPtr(Node.FontStatement, "base", node);
709 const casted: *const Node.FontStatement = @alignCast(@fieldParentPtr("base", node));
713710 if (casted.char_set) |char_set_node| return char_set_node.getLastToken();
714711 if (casted.italic) |italic_node| return italic_node.getLastToken();
715712 if (casted.weight) |weight_node| return weight_node.getLastToken();
716713 return casted.typeface;
717714 },
718715 .simple_statement => {
719 const casted = @fieldParentPtr(Node.SimpleStatement, "base", node);
716 const casted: *const Node.SimpleStatement = @alignCast(@fieldParentPtr("base", node));
720717 return casted.value.getLastToken();
721718 },
722719 .invalid => {
723 const casted = @fieldParentPtr(Node.Invalid, "base", node);
720 const casted: *const Node.Invalid = @alignCast(@fieldParentPtr("base", node));
724721 return casted.context[casted.context.len - 1];
725722 },
726723 }
......@@ -737,31 +734,31 @@ pub const Node = struct {
737734 switch (node.id) {
738735 .root => {
739736 try writer.writeAll("\n");
740 const root = @fieldParentPtr(Node.Root, "base", node);
737 const root: *Node.Root = @alignCast(@fieldParentPtr("base", node));
741738 for (root.body) |body_node| {
742739 try body_node.dump(tree, writer, indent + 1);
743740 }
744741 },
745742 .resource_external => {
746 const resource = @fieldParentPtr(Node.ResourceExternal, "base", node);
743 const resource: *Node.ResourceExternal = @alignCast(@fieldParentPtr("base", node));
747744 try writer.print(" {s} {s} [{d} common_resource_attributes]\n", .{ resource.id.slice(tree.source), resource.type.slice(tree.source), resource.common_resource_attributes.len });
748745 try resource.filename.dump(tree, writer, indent + 1);
749746 },
750747 .resource_raw_data => {
751 const resource = @fieldParentPtr(Node.ResourceRawData, "base", node);
748 const resource: *Node.ResourceRawData = @alignCast(@fieldParentPtr("base", node));
752749 try writer.print(" {s} {s} [{d} common_resource_attributes] raw data: {}\n", .{ resource.id.slice(tree.source), resource.type.slice(tree.source), resource.common_resource_attributes.len, resource.raw_data.len });
753750 for (resource.raw_data) |data_expression| {
754751 try data_expression.dump(tree, writer, indent + 1);
755752 }
756753 },
757754 .literal => {
758 const literal = @fieldParentPtr(Node.Literal, "base", node);
755 const literal: *Node.Literal = @alignCast(@fieldParentPtr("base", node));
759756 try writer.writeAll(" ");
760757 try writer.writeAll(literal.token.slice(tree.source));
761758 try writer.writeAll("\n");
762759 },
763760 .binary_expression => {
764 const binary = @fieldParentPtr(Node.BinaryExpression, "base", node);
761 const binary: *Node.BinaryExpression = @alignCast(@fieldParentPtr("base", node));
765762 try writer.writeAll(" ");
766763 try writer.writeAll(binary.operator.slice(tree.source));
767764 try writer.writeAll("\n");
......@@ -769,7 +766,7 @@ pub const Node = struct {
769766 try binary.right.dump(tree, writer, indent + 1);
770767 },
771768 .grouped_expression => {
772 const grouped = @fieldParentPtr(Node.GroupedExpression, "base", node);
769 const grouped: *Node.GroupedExpression = @alignCast(@fieldParentPtr("base", node));
773770 try writer.writeAll("\n");
774771 try writer.writeByteNTimes(' ', indent);
775772 try writer.writeAll(grouped.open_token.slice(tree.source));
......@@ -780,7 +777,7 @@ pub const Node = struct {
780777 try writer.writeAll("\n");
781778 },
782779 .not_expression => {
783 const not = @fieldParentPtr(Node.NotExpression, "base", node);
780 const not: *Node.NotExpression = @alignCast(@fieldParentPtr("base", node));
784781 try writer.writeAll(" ");
785782 try writer.writeAll(not.not_token.slice(tree.source));
786783 try writer.writeAll(" ");
......@@ -788,7 +785,7 @@ pub const Node = struct {
788785 try writer.writeAll("\n");
789786 },
790787 .accelerators => {
791 const accelerators = @fieldParentPtr(Node.Accelerators, "base", node);
788 const accelerators: *Node.Accelerators = @alignCast(@fieldParentPtr("base", node));
792789 try writer.print(" {s} {s} [{d} common_resource_attributes]\n", .{ accelerators.id.slice(tree.source), accelerators.type.slice(tree.source), accelerators.common_resource_attributes.len });
793790 for (accelerators.optional_statements) |statement| {
794791 try statement.dump(tree, writer, indent + 1);
......@@ -804,7 +801,7 @@ pub const Node = struct {
804801 try writer.writeAll("\n");
805802 },
806803 .accelerator => {
807 const accelerator = @fieldParentPtr(Node.Accelerator, "base", node);
804 const accelerator: *Node.Accelerator = @alignCast(@fieldParentPtr("base", node));
808805 for (accelerator.type_and_options, 0..) |option, i| {
809806 if (i != 0) try writer.writeAll(",");
810807 try writer.writeByte(' ');
......@@ -815,7 +812,7 @@ pub const Node = struct {
815812 try accelerator.idvalue.dump(tree, writer, indent + 1);
816813 },
817814 .dialog => {
818 const dialog = @fieldParentPtr(Node.Dialog, "base", node);
815 const dialog: *Node.Dialog = @alignCast(@fieldParentPtr("base", node));
819816 try writer.print(" {s} {s} [{d} common_resource_attributes]\n", .{ dialog.id.slice(tree.source), dialog.type.slice(tree.source), dialog.common_resource_attributes.len });
820817 inline for (.{ "x", "y", "width", "height" }) |arg| {
821818 try writer.writeByteNTimes(' ', indent + 1);
......@@ -841,7 +838,7 @@ pub const Node = struct {
841838 try writer.writeAll("\n");
842839 },
843840 .control_statement => {
844 const control = @fieldParentPtr(Node.ControlStatement, "base", node);
841 const control: *Node.ControlStatement = @alignCast(@fieldParentPtr("base", node));
845842 try writer.print(" {s}", .{control.type.slice(tree.source)});
846843 if (control.text) |text| {
847844 try writer.print(" text: {s}", .{text.slice(tree.source)});
......@@ -877,7 +874,7 @@ pub const Node = struct {
877874 }
878875 },
879876 .toolbar => {
880 const toolbar = @fieldParentPtr(Node.Toolbar, "base", node);
877 const toolbar: *Node.Toolbar = @alignCast(@fieldParentPtr("base", node));
881878 try writer.print(" {s} {s} [{d} common_resource_attributes]\n", .{ toolbar.id.slice(tree.source), toolbar.type.slice(tree.source), toolbar.common_resource_attributes.len });
882879 inline for (.{ "button_width", "button_height" }) |arg| {
883880 try writer.writeByteNTimes(' ', indent + 1);
......@@ -895,7 +892,7 @@ pub const Node = struct {
895892 try writer.writeAll("\n");
896893 },
897894 .menu => {
898 const menu = @fieldParentPtr(Node.Menu, "base", node);
895 const menu: *Node.Menu = @alignCast(@fieldParentPtr("base", node));
899896 try writer.print(" {s} {s} [{d} common_resource_attributes]\n", .{ menu.id.slice(tree.source), menu.type.slice(tree.source), menu.common_resource_attributes.len });
900897 for (menu.optional_statements) |statement| {
901898 try statement.dump(tree, writer, indent + 1);
......@@ -916,16 +913,16 @@ pub const Node = struct {
916913 try writer.writeAll("\n");
917914 },
918915 .menu_item => {
919 const menu_item = @fieldParentPtr(Node.MenuItem, "base", node);
916 const menu_item: *Node.MenuItem = @alignCast(@fieldParentPtr("base", node));
920917 try writer.print(" {s} {s} [{d} options]\n", .{ menu_item.menuitem.slice(tree.source), menu_item.text.slice(tree.source), menu_item.option_list.len });
921918 try menu_item.result.dump(tree, writer, indent + 1);
922919 },
923920 .menu_item_separator => {
924 const menu_item = @fieldParentPtr(Node.MenuItemSeparator, "base", node);
921 const menu_item: *Node.MenuItemSeparator = @alignCast(@fieldParentPtr("base", node));
925922 try writer.print(" {s} {s}\n", .{ menu_item.menuitem.slice(tree.source), menu_item.separator.slice(tree.source) });
926923 },
927924 .menu_item_ex => {
928 const menu_item = @fieldParentPtr(Node.MenuItemEx, "base", node);
925 const menu_item: *Node.MenuItemEx = @alignCast(@fieldParentPtr("base", node));
929926 try writer.print(" {s} {s}\n", .{ menu_item.menuitem.slice(tree.source), menu_item.text.slice(tree.source) });
930927 inline for (.{ "id", "type", "state" }) |arg| {
931928 if (@field(menu_item, arg)) |val_node| {
......@@ -936,7 +933,7 @@ pub const Node = struct {
936933 }
937934 },
938935 .popup => {
939 const popup = @fieldParentPtr(Node.Popup, "base", node);
936 const popup: *Node.Popup = @alignCast(@fieldParentPtr("base", node));
940937 try writer.print(" {s} {s} [{d} options]\n", .{ popup.popup.slice(tree.source), popup.text.slice(tree.source), popup.option_list.len });
941938 try writer.writeByteNTimes(' ', indent);
942939 try writer.writeAll(popup.begin_token.slice(tree.source));
......@@ -949,7 +946,7 @@ pub const Node = struct {
949946 try writer.writeAll("\n");
950947 },
951948 .popup_ex => {
952 const popup = @fieldParentPtr(Node.PopupEx, "base", node);
949 const popup: *Node.PopupEx = @alignCast(@fieldParentPtr("base", node));
953950 try writer.print(" {s} {s}\n", .{ popup.popup.slice(tree.source), popup.text.slice(tree.source) });
954951 inline for (.{ "id", "type", "state", "help_id" }) |arg| {
955952 if (@field(popup, arg)) |val_node| {
......@@ -969,7 +966,7 @@ pub const Node = struct {
969966 try writer.writeAll("\n");
970967 },
971968 .version_info => {
972 const version_info = @fieldParentPtr(Node.VersionInfo, "base", node);
969 const version_info: *Node.VersionInfo = @alignCast(@fieldParentPtr("base", node));
973970 try writer.print(" {s} {s} [{d} common_resource_attributes]\n", .{ version_info.id.slice(tree.source), version_info.versioninfo.slice(tree.source), version_info.common_resource_attributes.len });
974971 for (version_info.fixed_info) |fixed_info| {
975972 try fixed_info.dump(tree, writer, indent + 1);
......@@ -985,14 +982,14 @@ pub const Node = struct {
985982 try writer.writeAll("\n");
986983 },
987984 .version_statement => {
988 const version_statement = @fieldParentPtr(Node.VersionStatement, "base", node);
985 const version_statement: *Node.VersionStatement = @alignCast(@fieldParentPtr("base", node));
989986 try writer.print(" {s}\n", .{version_statement.type.slice(tree.source)});
990987 for (version_statement.parts) |part| {
991988 try part.dump(tree, writer, indent + 1);
992989 }
993990 },
994991 .block => {
995 const block = @fieldParentPtr(Node.Block, "base", node);
992 const block: *Node.Block = @alignCast(@fieldParentPtr("base", node));
996993 try writer.print(" {s} {s}\n", .{ block.identifier.slice(tree.source), block.key.slice(tree.source) });
997994 for (block.values) |value| {
998995 try value.dump(tree, writer, indent + 1);
......@@ -1008,14 +1005,14 @@ pub const Node = struct {
10081005 try writer.writeAll("\n");
10091006 },
10101007 .block_value => {
1011 const block_value = @fieldParentPtr(Node.BlockValue, "base", node);
1008 const block_value: *Node.BlockValue = @alignCast(@fieldParentPtr("base", node));
10121009 try writer.print(" {s} {s}\n", .{ block_value.identifier.slice(tree.source), block_value.key.slice(tree.source) });
10131010 for (block_value.values) |value| {
10141011 try value.dump(tree, writer, indent + 1);
10151012 }
10161013 },
10171014 .block_value_value => {
1018 const block_value = @fieldParentPtr(Node.BlockValueValue, "base", node);
1015 const block_value: *Node.BlockValueValue = @alignCast(@fieldParentPtr("base", node));
10191016 if (block_value.trailing_comma) {
10201017 try writer.writeAll(" ,");
10211018 }
......@@ -1023,7 +1020,7 @@ pub const Node = struct {
10231020 try block_value.expression.dump(tree, writer, indent + 1);
10241021 },
10251022 .string_table => {
1026 const string_table = @fieldParentPtr(Node.StringTable, "base", node);
1023 const string_table: *Node.StringTable = @alignCast(@fieldParentPtr("base", node));
10271024 try writer.print(" {s} [{d} common_resource_attributes]\n", .{ string_table.type.slice(tree.source), string_table.common_resource_attributes.len });
10281025 for (string_table.optional_statements) |statement| {
10291026 try statement.dump(tree, writer, indent + 1);
......@@ -1040,19 +1037,19 @@ pub const Node = struct {
10401037 },
10411038 .string_table_string => {
10421039 try writer.writeAll("\n");
1043 const string = @fieldParentPtr(Node.StringTableString, "base", node);
1040 const string: *Node.StringTableString = @alignCast(@fieldParentPtr("base", node));
10441041 try string.id.dump(tree, writer, indent + 1);
10451042 try writer.writeByteNTimes(' ', indent + 1);
10461043 try writer.print("{s}\n", .{string.string.slice(tree.source)});
10471044 },
10481045 .language_statement => {
1049 const language = @fieldParentPtr(Node.LanguageStatement, "base", node);
1046 const language: *Node.LanguageStatement = @alignCast(@fieldParentPtr("base", node));
10501047 try writer.print(" {s}\n", .{language.language_token.slice(tree.source)});
10511048 try language.primary_language_id.dump(tree, writer, indent + 1);
10521049 try language.sublanguage_id.dump(tree, writer, indent + 1);
10531050 },
10541051 .font_statement => {
1055 const font = @fieldParentPtr(Node.FontStatement, "base", node);
1052 const font: *Node.FontStatement = @alignCast(@fieldParentPtr("base", node));
10561053 try writer.print(" {s} typeface: {s}\n", .{ font.identifier.slice(tree.source), font.typeface.slice(tree.source) });
10571054 try writer.writeByteNTimes(' ', indent + 1);
10581055 try writer.writeAll("point_size:\n");
......@@ -1066,12 +1063,12 @@ pub const Node = struct {
10661063 }
10671064 },
10681065 .simple_statement => {
1069 const statement = @fieldParentPtr(Node.SimpleStatement, "base", node);
1066 const statement: *Node.SimpleStatement = @alignCast(@fieldParentPtr("base", node));
10701067 try writer.print(" {s}\n", .{statement.identifier.slice(tree.source)});
10711068 try statement.value.dump(tree, writer, indent + 1);
10721069 },
10731070 .invalid => {
1074 const invalid = @fieldParentPtr(Node.Invalid, "base", node);
1071 const invalid: *Node.Invalid = @alignCast(@fieldParentPtr("base", node));
10751072 try writer.print(" context.len: {}\n", .{invalid.context.len});
10761073 for (invalid.context) |context_token| {
10771074 try writer.writeByteNTimes(' ', indent + 1);
lib/compiler/resinator/compile.zig+33-33
......@@ -229,34 +229,34 @@ pub const Compiler = struct {
229229 pub fn writeNode(self: *Compiler, node: *Node, writer: anytype) !void {
230230 switch (node.id) {
231231 .root => unreachable, // writeRoot should be called directly instead
232 .resource_external => try self.writeResourceExternal(@fieldParentPtr(Node.ResourceExternal, "base", node), writer),
233 .resource_raw_data => try self.writeResourceRawData(@fieldParentPtr(Node.ResourceRawData, "base", node), writer),
232 .resource_external => try self.writeResourceExternal(@alignCast(@fieldParentPtr("base", node)), writer),
233 .resource_raw_data => try self.writeResourceRawData(@alignCast(@fieldParentPtr("base", node)), writer),
234234 .literal => unreachable, // this is context dependent and should be handled by its parent
235235 .binary_expression => unreachable,
236236 .grouped_expression => unreachable,
237237 .not_expression => unreachable,
238238 .invalid => {}, // no-op, currently only used for dangling literals at EOF
239 .accelerators => try self.writeAccelerators(@fieldParentPtr(Node.Accelerators, "base", node), writer),
239 .accelerators => try self.writeAccelerators(@alignCast(@fieldParentPtr("base", node)), writer),
240240 .accelerator => unreachable, // handled by writeAccelerators
241 .dialog => try self.writeDialog(@fieldParentPtr(Node.Dialog, "base", node), writer),
241 .dialog => try self.writeDialog(@alignCast(@fieldParentPtr("base", node)), writer),
242242 .control_statement => unreachable,
243 .toolbar => try self.writeToolbar(@fieldParentPtr(Node.Toolbar, "base", node), writer),
244 .menu => try self.writeMenu(@fieldParentPtr(Node.Menu, "base", node), writer),
243 .toolbar => try self.writeToolbar(@alignCast(@fieldParentPtr("base", node)), writer),
244 .menu => try self.writeMenu(@alignCast(@fieldParentPtr("base", node)), writer),
245245 .menu_item => unreachable,
246246 .menu_item_separator => unreachable,
247247 .menu_item_ex => unreachable,
248248 .popup => unreachable,
249249 .popup_ex => unreachable,
250 .version_info => try self.writeVersionInfo(@fieldParentPtr(Node.VersionInfo, "base", node), writer),
250 .version_info => try self.writeVersionInfo(@alignCast(@fieldParentPtr("base", node)), writer),
251251 .version_statement => unreachable,
252252 .block => unreachable,
253253 .block_value => unreachable,
254254 .block_value_value => unreachable,
255 .string_table => try self.writeStringTable(@fieldParentPtr(Node.StringTable, "base", node)),
255 .string_table => try self.writeStringTable(@alignCast(@fieldParentPtr("base", node))),
256256 .string_table_string => unreachable, // handled by writeStringTable
257 .language_statement => self.writeLanguageStatement(@fieldParentPtr(Node.LanguageStatement, "base", node)),
257 .language_statement => self.writeLanguageStatement(@alignCast(@fieldParentPtr("base", node))),
258258 .font_statement => unreachable,
259 .simple_statement => self.writeTopLevelSimpleStatement(@fieldParentPtr(Node.SimpleStatement, "base", node)),
259 .simple_statement => self.writeTopLevelSimpleStatement(@alignCast(@fieldParentPtr("base", node))),
260260 }
261261 }
262262
......@@ -1289,7 +1289,7 @@ pub const Compiler = struct {
12891289 return evaluateNumberExpression(node, self.source, self.input_code_pages).asWord();
12901290 } else {
12911291 std.debug.assert(node.isStringLiteral());
1292 const literal = @fieldParentPtr(Node.Literal, "base", node);
1292 const literal: *Node.Literal = @alignCast(@fieldParentPtr("base", node));
12931293 const bytes = SourceBytes{
12941294 .slice = literal.token.slice(self.source),
12951295 .code_page = self.input_code_pages.getForToken(literal.token),
......@@ -1342,7 +1342,7 @@ pub const Compiler = struct {
13421342 /// the writer within this function could return error.NoSpaceLeft
13431343 pub fn writeAcceleratorsData(self: *Compiler, node: *Node.Accelerators, data_writer: anytype) !void {
13441344 for (node.accelerators, 0..) |accel_node, i| {
1345 const accelerator = @fieldParentPtr(Node.Accelerator, "base", accel_node);
1345 const accelerator: *Node.Accelerator = @alignCast(@fieldParentPtr("base", accel_node));
13461346 var modifiers = res.AcceleratorModifiers{};
13471347 for (accelerator.type_and_options) |type_or_option| {
13481348 const modifier = rc.AcceleratorTypeAndOptions.map.get(type_or_option.slice(self.source)).?;
......@@ -1426,7 +1426,7 @@ pub const Compiler = struct {
14261426 for (node.optional_statements) |optional_statement| {
14271427 switch (optional_statement.id) {
14281428 .simple_statement => {
1429 const simple_statement = @fieldParentPtr(Node.SimpleStatement, "base", optional_statement);
1429 const simple_statement: *Node.SimpleStatement = @alignCast(@fieldParentPtr("base", optional_statement));
14301430 const statement_identifier = simple_statement.identifier;
14311431 const statement_type = rc.OptionalStatements.dialog_map.get(statement_identifier.slice(self.source)) orelse continue;
14321432 switch (statement_type) {
......@@ -1440,7 +1440,7 @@ pub const Compiler = struct {
14401440 },
14411441 .caption => {
14421442 std.debug.assert(simple_statement.value.id == .literal);
1443 const literal_node = @fieldParentPtr(Node.Literal, "base", simple_statement.value);
1443 const literal_node: *Node.Literal = @alignCast(@fieldParentPtr("base", simple_statement.value));
14441444 optional_statement_values.caption = literal_node.token;
14451445 },
14461446 .class => {
......@@ -1466,7 +1466,7 @@ pub const Compiler = struct {
14661466 optional_statement_values.class = NameOrOrdinal{ .ordinal = class_ordinal.asWord() };
14671467 } else {
14681468 std.debug.assert(simple_statement.value.isStringLiteral());
1469 const literal_node = @fieldParentPtr(Node.Literal, "base", simple_statement.value);
1469 const literal_node: *Node.Literal = @alignCast(@fieldParentPtr("base", simple_statement.value));
14701470 const parsed = try self.parseQuotedStringAsWideString(literal_node.token);
14711471 optional_statement_values.class = NameOrOrdinal{ .name = parsed };
14721472 }
......@@ -1492,7 +1492,7 @@ pub const Compiler = struct {
14921492 }
14931493
14941494 std.debug.assert(simple_statement.value.id == .literal);
1495 const literal_node = @fieldParentPtr(Node.Literal, "base", simple_statement.value);
1495 const literal_node: *Node.Literal = @alignCast(@fieldParentPtr("base", simple_statement.value));
14961496
14971497 const token_slice = literal_node.token.slice(self.source);
14981498 const bytes = SourceBytes{
......@@ -1542,7 +1542,7 @@ pub const Compiler = struct {
15421542 }
15431543 },
15441544 .font_statement => {
1545 const font = @fieldParentPtr(Node.FontStatement, "base", optional_statement);
1545 const font: *Node.FontStatement = @alignCast(@fieldParentPtr("base", optional_statement));
15461546 if (optional_statement_values.font != null) {
15471547 optional_statement_values.font.?.node = font;
15481548 } else {
......@@ -1581,7 +1581,7 @@ pub const Compiler = struct {
15811581 // Multiple CLASS parameters are specified and any of them are treated as a number, then
15821582 // the last CLASS is always treated as a number no matter what
15831583 if (last_class_would_be_forced_ordinal and optional_statement_values.class.? == .name) {
1584 const literal_node = @fieldParentPtr(Node.Literal, "base", last_class.value);
1584 const literal_node: *Node.Literal = @alignCast(@fieldParentPtr("base", last_class.value));
15851585 const ordinal_value = res.ForcedOrdinal.fromUtf16Le(optional_statement_values.class.?.name);
15861586
15871587 try self.addErrorDetails(.{
......@@ -1611,7 +1611,7 @@ pub const Compiler = struct {
16111611 // 2. Multiple MENU parameters are specified and any of them are treated as a number, then
16121612 // the last MENU is always treated as a number no matter what
16131613 if ((last_menu_would_be_forced_ordinal or last_menu_has_digit_as_first_char) and optional_statement_values.menu.? == .name) {
1614 const literal_node = @fieldParentPtr(Node.Literal, "base", last_menu.value);
1614 const literal_node: *Node.Literal = @alignCast(@fieldParentPtr("base", last_menu.value));
16151615 const token_slice = literal_node.token.slice(self.source);
16161616 const bytes = SourceBytes{
16171617 .slice = token_slice,
......@@ -1658,7 +1658,7 @@ pub const Compiler = struct {
16581658 // between resinator and the Win32 RC compiler, we only emit a hint instead of
16591659 // a warning.
16601660 if (last_menu_did_uppercase) {
1661 const literal_node = @fieldParentPtr(Node.Literal, "base", last_menu.value);
1661 const literal_node: *Node.Literal = @alignCast(@fieldParentPtr("base", last_menu.value));
16621662 try self.addErrorDetails(.{
16631663 .err = .dialog_menu_id_was_uppercased,
16641664 .type = .hint,
......@@ -1704,7 +1704,7 @@ pub const Compiler = struct {
17041704 defer controls_by_id.deinit();
17051705
17061706 for (node.controls) |control_node| {
1707 const control = @fieldParentPtr(Node.ControlStatement, "base", control_node);
1707 const control: *Node.ControlStatement = @alignCast(@fieldParentPtr("base", control_node));
17081708
17091709 self.writeDialogControl(
17101710 control,
......@@ -1940,7 +1940,7 @@ pub const Compiler = struct {
19401940 // And then write out the ordinal using a proper a NameOrOrdinal encoding.
19411941 try ordinal.write(data_writer);
19421942 } else if (class_node.isStringLiteral()) {
1943 const literal_node = @fieldParentPtr(Node.Literal, "base", class_node);
1943 const literal_node: *Node.Literal = @alignCast(@fieldParentPtr("base", class_node));
19441944 const parsed = try self.parseQuotedStringAsWideString(literal_node.token);
19451945 defer self.allocator.free(parsed);
19461946 if (rc.ControlClass.fromWideString(parsed)) |control_class| {
......@@ -1955,7 +1955,7 @@ pub const Compiler = struct {
19551955 try name.write(data_writer);
19561956 }
19571957 } else {
1958 const literal_node = @fieldParentPtr(Node.Literal, "base", class_node);
1958 const literal_node: *Node.Literal = @alignCast(@fieldParentPtr("base", class_node));
19591959 const literal_slice = literal_node.token.slice(self.source);
19601960 // This succeeding is guaranteed by the parser
19611961 const control_class = rc.ControlClass.map.get(literal_slice) orelse unreachable;
......@@ -2178,7 +2178,7 @@ pub const Compiler = struct {
21782178 try writer.writeInt(u16, 0, .little); // null-terminated UTF-16 text
21792179 },
21802180 .menu_item => {
2181 const menu_item = @fieldParentPtr(Node.MenuItem, "base", node);
2181 const menu_item: *Node.MenuItem = @alignCast(@fieldParentPtr("base", node));
21822182 var flags = res.MenuItemFlags{};
21832183 for (menu_item.option_list) |option_token| {
21842184 // This failing would be a bug in the parser
......@@ -2196,7 +2196,7 @@ pub const Compiler = struct {
21962196 try writer.writeAll(std.mem.sliceAsBytes(text[0 .. text.len + 1]));
21972197 },
21982198 .popup => {
2199 const popup = @fieldParentPtr(Node.Popup, "base", node);
2199 const popup: *Node.Popup = @alignCast(@fieldParentPtr("base", node));
22002200 var flags = res.MenuItemFlags{ .value = res.MF.POPUP };
22012201 for (popup.option_list) |option_token| {
22022202 // This failing would be a bug in the parser
......@@ -2216,7 +2216,7 @@ pub const Compiler = struct {
22162216 }
22172217 },
22182218 inline .menu_item_ex, .popup_ex => |node_type| {
2219 const menu_item = @fieldParentPtr(node_type.Type(), "base", node);
2219 const menu_item: *node_type.Type() = @alignCast(@fieldParentPtr("base", node));
22202220
22212221 if (menu_item.type) |flags| {
22222222 const value = evaluateNumberExpression(flags, self.source, self.input_code_pages);
......@@ -2295,7 +2295,7 @@ pub const Compiler = struct {
22952295 for (node.fixed_info) |fixed_info| {
22962296 switch (fixed_info.id) {
22972297 .version_statement => {
2298 const version_statement = @fieldParentPtr(Node.VersionStatement, "base", fixed_info);
2298 const version_statement: *Node.VersionStatement = @alignCast(@fieldParentPtr("base", fixed_info));
22992299 const version_type = rc.VersionInfo.map.get(version_statement.type.slice(self.source)).?;
23002300
23012301 // Ensure that all parts are cleared for each version, to properly account for
......@@ -2345,7 +2345,7 @@ pub const Compiler = struct {
23452345 }
23462346 },
23472347 .simple_statement => {
2348 const statement = @fieldParentPtr(Node.SimpleStatement, "base", fixed_info);
2348 const statement: *Node.SimpleStatement = @alignCast(@fieldParentPtr("base", fixed_info));
23492349 const statement_type = rc.VersionInfo.map.get(statement.identifier.slice(self.source)).?;
23502350 const value = evaluateNumberExpression(statement.value, self.source, self.input_code_pages);
23512351 switch (statement_type) {
......@@ -2416,7 +2416,7 @@ pub const Compiler = struct {
24162416
24172417 switch (node.id) {
24182418 inline .block, .block_value => |node_type| {
2419 const block_or_value = @fieldParentPtr(node_type.Type(), "base", node);
2419 const block_or_value: *node_type.Type() = @alignCast(@fieldParentPtr("base", node));
24202420 const parsed_key = try self.parseQuotedStringAsWideString(block_or_value.key);
24212421 defer self.allocator.free(parsed_key);
24222422
......@@ -2506,7 +2506,7 @@ pub const Compiler = struct {
25062506 const language = getLanguageFromOptionalStatements(node.optional_statements, self.source, self.input_code_pages) orelse self.state.language;
25072507
25082508 for (node.strings) |string_node| {
2509 const string = @fieldParentPtr(Node.StringTableString, "base", string_node);
2509 const string: *Node.StringTableString = @alignCast(@fieldParentPtr("base", string_node));
25102510 const string_id_data = try self.evaluateDataExpression(string.id);
25112511 const string_id = string_id_data.number.asWord();
25122512
......@@ -2795,11 +2795,11 @@ pub const Compiler = struct {
27952795 fn applyToOptionalStatements(language: *res.Language, version: *u32, characteristics: *u32, statements: []*Node, source: []const u8, code_page_lookup: *const CodePageLookup) void {
27962796 for (statements) |node| switch (node.id) {
27972797 .language_statement => {
2798 const language_statement = @fieldParentPtr(Node.LanguageStatement, "base", node);
2798 const language_statement: *Node.LanguageStatement = @alignCast(@fieldParentPtr("base", node));
27992799 language.* = languageFromLanguageStatement(language_statement, source, code_page_lookup);
28002800 },
28012801 .simple_statement => {
2802 const simple_statement = @fieldParentPtr(Node.SimpleStatement, "base", node);
2802 const simple_statement: *Node.SimpleStatement = @alignCast(@fieldParentPtr("base", node));
28032803 const statement_type = rc.OptionalStatements.map.get(simple_statement.identifier.slice(source)) orelse continue;
28042804 const result = Compiler.evaluateNumberExpression(simple_statement.value, source, code_page_lookup);
28052805 switch (statement_type) {
......@@ -2824,7 +2824,7 @@ pub const Compiler = struct {
28242824 pub fn getLanguageFromOptionalStatements(statements: []*Node, source: []const u8, code_page_lookup: *const CodePageLookup) ?res.Language {
28252825 for (statements) |node| switch (node.id) {
28262826 .language_statement => {
2827 const language_statement = @fieldParentPtr(Node.LanguageStatement, "base", node);
2827 const language_statement: *Node.LanguageStatement = @alignCast(@fieldParentPtr("base", node));
28282828 return languageFromLanguageStatement(language_statement, source, code_page_lookup);
28292829 },
28302830 else => continue,
lib/compiler/resinator/parse.zig+1-1
......@@ -889,7 +889,7 @@ pub const Parser = struct {
889889 if (control == .control) {
890890 class = try self.parseExpression(.{});
891891 if (class.?.id == .literal) {
892 const class_literal = @fieldParentPtr(Node.Literal, "base", class.?);
892 const class_literal: *Node.Literal = @alignCast(@fieldParentPtr("base", class.?));
893893 const is_invalid_control_class = class_literal.token.id == .literal and !rc.ControlClass.map.has(class_literal.token.slice(self.lexer.buffer));
894894 if (is_invalid_control_class) {
895895 return self.addErrorDetailsAndFail(.{
lib/docs/wasm/Walk.zig+6-6
......@@ -48,7 +48,7 @@ pub const File = struct {
4848 pub fn field_count(file: *const File, node: Ast.Node.Index) u32 {
4949 const scope = file.scopes.get(node) orelse return 0;
5050 if (scope.tag != .namespace) return 0;
51 const namespace = @fieldParentPtr(Scope.Namespace, "base", scope);
51 const namespace: *Scope.Namespace = @alignCast(@fieldParentPtr("base", scope));
5252 return namespace.field_count;
5353 }
5454
......@@ -439,11 +439,11 @@ pub const Scope = struct {
439439 while (true) switch (it.tag) {
440440 .top => unreachable,
441441 .local => {
442 const local = @fieldParentPtr(Local, "base", it);
442 const local: *Local = @alignCast(@fieldParentPtr("base", it));
443443 it = local.parent;
444444 },
445445 .namespace => {
446 const namespace = @fieldParentPtr(Namespace, "base", it);
446 const namespace: *Namespace = @alignCast(@fieldParentPtr("base", it));
447447 return namespace.decl_index;
448448 },
449449 };
......@@ -453,7 +453,7 @@ pub const Scope = struct {
453453 switch (scope.tag) {
454454 .top, .local => return null,
455455 .namespace => {
456 const namespace = @fieldParentPtr(Namespace, "base", scope);
456 const namespace: *Namespace = @alignCast(@fieldParentPtr("base", scope));
457457 return namespace.names.get(name);
458458 },
459459 }
......@@ -465,7 +465,7 @@ pub const Scope = struct {
465465 while (true) switch (it.tag) {
466466 .top => break,
467467 .local => {
468 const local = @fieldParentPtr(Local, "base", it);
468 const local: *Local = @alignCast(@fieldParentPtr("base", it));
469469 const name_token = main_tokens[local.var_node] + 1;
470470 const ident_name = ast.tokenSlice(name_token);
471471 if (std.mem.eql(u8, ident_name, name)) {
......@@ -474,7 +474,7 @@ pub const Scope = struct {
474474 it = local.parent;
475475 },
476476 .namespace => {
477 const namespace = @fieldParentPtr(Namespace, "base", it);
477 const namespace: *Namespace = @alignCast(@fieldParentPtr("base", it));
478478 if (namespace.names.get(name)) |node| {
479479 return node;
480480 }
lib/std/Build.zig+2-2
......@@ -1062,8 +1062,8 @@ pub fn getUninstallStep(self: *Build) *Step {
10621062
10631063fn makeUninstall(uninstall_step: *Step, prog_node: *std.Progress.Node) anyerror!void {
10641064 _ = prog_node;
1065 const uninstall_tls = @fieldParentPtr(*TopLevelStep, "step", uninstall_step);
1066 const self = @fieldParentPtr(*Build, "uninstall_tls", uninstall_tls);
1065 const uninstall_tls: *TopLevelStep = @fieldParentPtr("step", uninstall_step);
1066 const self: *Build = @fieldParentPtr("uninstall_tls", uninstall_tls);
10671067
10681068 for (self.installed_files.items) |installed_file| {
10691069 const full_path = self.getInstallPath(installed_file.dir, installed_file.path);
lib/std/Build/Step.zig+1-1
......@@ -231,7 +231,7 @@ fn makeNoOp(step: *Step, prog_node: *std.Progress.Node) anyerror!void {
231231
232232pub fn cast(step: *Step, comptime T: type) ?*T {
233233 if (step.id == T.base_id) {
234 return @fieldParentPtr(*T, "step", step);
234 return @fieldParentPtr("step", step);
235235 }
236236 return null;
237237}
lib/std/Build/Step/CheckFile.zig+1-1
......@@ -49,7 +49,7 @@ pub fn setName(self: *CheckFile, name: []const u8) void {
4949fn make(step: *Step, prog_node: *std.Progress.Node) !void {
5050 _ = prog_node;
5151 const b = step.owner;
52 const self = @fieldParentPtr(*CheckFile, "step", step);
52 const self: *CheckFile = @fieldParentPtr("step", step);
5353
5454 const src_path = self.source.getPath(b);
5555 const contents = fs.cwd().readFileAlloc(b.allocator, src_path, self.max_bytes) catch |err| {
lib/std/Build/Step/CheckObject.zig+1-1
......@@ -530,7 +530,7 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
530530 _ = prog_node;
531531 const b = step.owner;
532532 const gpa = b.allocator;
533 const self = @fieldParentPtr(*CheckObject, "step", step);
533 const self: *CheckObject = @fieldParentPtr("step", step);
534534
535535 const src_path = self.source.getPath(b);
536536 const contents = fs.cwd().readFileAllocOptions(
lib/std/Build/Step/Compile.zig+1-1
......@@ -918,7 +918,7 @@ fn getGeneratedFilePath(self: *Compile, comptime tag_name: []const u8, asking_st
918918fn make(step: *Step, prog_node: *std.Progress.Node) !void {
919919 const b = step.owner;
920920 const arena = b.allocator;
921 const self = @fieldParentPtr(*Compile, "step", step);
921 const self: *Compile = @fieldParentPtr("step", step);
922922
923923 var zig_args = ArrayList([]const u8).init(arena);
924924 defer zig_args.deinit();
lib/std/Build/Step/ConfigHeader.zig+1-1
......@@ -167,7 +167,7 @@ fn putValue(self: *ConfigHeader, field_name: []const u8, comptime T: type, v: T)
167167fn make(step: *Step, prog_node: *std.Progress.Node) !void {
168168 _ = prog_node;
169169 const b = step.owner;
170 const self = @fieldParentPtr(*ConfigHeader, "step", step);
170 const self: *ConfigHeader = @fieldParentPtr("step", step);
171171 const gpa = b.allocator;
172172 const arena = b.allocator;
173173
lib/std/Build/Step/Fmt.zig+1-1
......@@ -47,7 +47,7 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
4747
4848 const b = step.owner;
4949 const arena = b.allocator;
50 const self = @fieldParentPtr(*Fmt, "step", step);
50 const self: *Fmt = @fieldParentPtr("step", step);
5151
5252 var argv: std.ArrayListUnmanaged([]const u8) = .{};
5353 try argv.ensureUnusedCapacity(arena, 2 + 1 + self.paths.len + 2 * self.exclude_paths.len);
lib/std/Build/Step/InstallArtifact.zig+1-1
......@@ -121,7 +121,7 @@ pub fn create(owner: *std.Build, artifact: *Step.Compile, options: Options) *Ins
121121
122122fn make(step: *Step, prog_node: *std.Progress.Node) !void {
123123 _ = prog_node;
124 const self = @fieldParentPtr(*InstallArtifact, "step", step);
124 const self: *InstallArtifact = @fieldParentPtr("step", step);
125125 const dest_builder = step.owner;
126126 const cwd = fs.cwd();
127127
lib/std/Build/Step/InstallDir.zig+1-1
......@@ -63,7 +63,7 @@ pub fn create(owner: *std.Build, options: Options) *InstallDirStep {
6363
6464fn make(step: *Step, prog_node: *std.Progress.Node) !void {
6565 _ = prog_node;
66 const self = @fieldParentPtr(*InstallDirStep, "step", step);
66 const self: *InstallDirStep = @fieldParentPtr("step", step);
6767 const dest_builder = self.dest_builder;
6868 const arena = dest_builder.allocator;
6969 const dest_prefix = dest_builder.getInstallPath(self.options.install_dir, self.options.install_subdir);
lib/std/Build/Step/InstallFile.zig+1-1
......@@ -43,7 +43,7 @@ pub fn create(
4343fn make(step: *Step, prog_node: *std.Progress.Node) !void {
4444 _ = prog_node;
4545 const src_builder = step.owner;
46 const self = @fieldParentPtr(*InstallFile, "step", step);
46 const self: *InstallFile = @fieldParentPtr("step", step);
4747 const dest_builder = self.dest_builder;
4848 const full_src_path = self.source.getPath2(src_builder, step);
4949 const full_dest_path = dest_builder.getInstallPath(self.dir, self.dest_rel_path);
lib/std/Build/Step/ObjCopy.zig+1-1
......@@ -92,7 +92,7 @@ pub fn getOutputSeparatedDebug(self: *const ObjCopy) ?std.Build.LazyPath {
9292
9393fn make(step: *Step, prog_node: *std.Progress.Node) !void {
9494 const b = step.owner;
95 const self = @fieldParentPtr(*ObjCopy, "step", step);
95 const self: *ObjCopy = @fieldParentPtr("step", step);
9696
9797 var man = b.graph.cache.obtain();
9898 defer man.deinit();
lib/std/Build/Step/Options.zig+1-1
......@@ -415,7 +415,7 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
415415 _ = prog_node;
416416
417417 const b = step.owner;
418 const self = @fieldParentPtr(*Options, "step", step);
418 const self: *Options = @fieldParentPtr("step", step);
419419
420420 for (self.args.items) |item| {
421421 self.addOption(
lib/std/Build/Step/RemoveDir.zig+1-1
......@@ -28,7 +28,7 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
2828 _ = prog_node;
2929
3030 const b = step.owner;
31 const self = @fieldParentPtr(*RemoveDir, "step", step);
31 const self: *RemoveDir = @fieldParentPtr("step", step);
3232
3333 b.build_root.handle.deleteTree(self.dir_path) catch |err| {
3434 if (b.build_root.path) |base| {
lib/std/Build/Step/Run.zig+1-1
......@@ -497,7 +497,7 @@ const IndexedOutput = struct {
497497fn make(step: *Step, prog_node: *std.Progress.Node) !void {
498498 const b = step.owner;
499499 const arena = b.allocator;
500 const self = @fieldParentPtr(*Run, "step", step);
500 const self: *Run = @fieldParentPtr("step", step);
501501 const has_side_effects = self.hasSideEffects();
502502
503503 var argv_list = ArrayList([]const u8).init(arena);
lib/std/Build/Step/TranslateC.zig+1-1
......@@ -118,7 +118,7 @@ pub fn defineCMacroRaw(self: *TranslateC, name_and_value: []const u8) void {
118118
119119fn make(step: *Step, prog_node: *std.Progress.Node) !void {
120120 const b = step.owner;
121 const self = @fieldParentPtr(*TranslateC, "step", step);
121 const self: *TranslateC = @fieldParentPtr("step", step);
122122
123123 var argv_list = std.ArrayList([]const u8).init(b.allocator);
124124 try argv_list.append(b.graph.zig_exe);
lib/std/Build/Step/WriteFile.zig+1-1
......@@ -141,7 +141,7 @@ fn maybeUpdateName(wf: *WriteFile) void {
141141fn make(step: *Step, prog_node: *std.Progress.Node) !void {
142142 _ = prog_node;
143143 const b = step.owner;
144 const wf = @fieldParentPtr(*WriteFile, "step", step);
144 const wf: *WriteFile = @fieldParentPtr("step", step);
145145
146146 // Writing to source files is kind of an extra capability of this
147147 // WriteFile - arguably it should be a different step. But anyway here
lib/std/Thread/Futex.zig+3-3
......@@ -644,7 +644,7 @@ const PosixImpl = struct {
644644 };
645645
646646 // There's a wait queue on the address; get the queue head and tail.
647 const head = @fieldParentPtr(Waiter, "node", entry_node);
647 const head: *Waiter = @fieldParentPtr("node", entry_node);
648648 const tail = head.tail orelse unreachable;
649649
650650 // Push the waiter to the tail by replacing it and linking to the previous tail.
......@@ -656,7 +656,7 @@ const PosixImpl = struct {
656656 fn remove(treap: *Treap, address: usize, max_waiters: usize) WaitList {
657657 // Find the wait queue associated with this address and get the head/tail if any.
658658 var entry = treap.getEntryFor(address);
659 var queue_head = if (entry.node) |node| @fieldParentPtr(Waiter, "node", node) else null;
659 var queue_head: ?*Waiter = if (entry.node) |node| @fieldParentPtr("node", node) else null;
660660 const queue_tail = if (queue_head) |head| head.tail else null;
661661
662662 // Once we're done updating the head, fix it's tail pointer and update the treap's queue head as well.
......@@ -699,7 +699,7 @@ const PosixImpl = struct {
699699 };
700700
701701 // The queue head and tail must exist if we're removing a queued waiter.
702 const head = @fieldParentPtr(Waiter, "node", entry.node orelse unreachable);
702 const head: *Waiter = @fieldParentPtr("node", entry.node orelse unreachable);
703703 const tail = head.tail orelse unreachable;
704704
705705 // A waiter with a previous link is never the head of the queue.
lib/std/Thread/Pool.zig+2-2
......@@ -88,8 +88,8 @@ pub fn spawn(pool: *Pool, comptime func: anytype, args: anytype) !void {
8888 run_node: RunQueue.Node = .{ .data = .{ .runFn = runFn } },
8989
9090 fn runFn(runnable: *Runnable) void {
91 const run_node = @fieldParentPtr(*RunQueue.Node, "data", runnable);
92 const closure = @fieldParentPtr(*@This(), "run_node", run_node);
91 const run_node: *RunQueue.Node = @fieldParentPtr("data", runnable);
92 const closure: *@This() = @fieldParentPtr("run_node", run_node);
9393 @call(.auto, func, closure.arguments);
9494
9595 // The thread pool's allocator is protected by the mutex.
lib/std/http/Client.zig+1-1
......@@ -108,7 +108,7 @@ pub const ConnectionPool = struct {
108108 pool.mutex.lock();
109109 defer pool.mutex.unlock();
110110
111 const node = @fieldParentPtr(*Node, "data", connection);
111 const node: *Node = @fieldParentPtr("data", connection);
112112
113113 pool.used.remove(node);
114114
lib/std/zig.zig+1
......@@ -1021,4 +1021,5 @@ test {
10211021 _ = string_literal;
10221022 _ = system;
10231023 _ = target;
1024 _ = c_translation;
10241025}
lib/std/zig/AstGen.zig+3-3
......@@ -11715,20 +11715,20 @@ const Scope = struct {
1171511715 fn cast(base: *Scope, comptime T: type) ?*T {
1171611716 if (T == Defer) {
1171711717 switch (base.tag) {
11718 .defer_normal, .defer_error => return @alignCast(@fieldParentPtr(*align(1) T, "base", base)),
11718 .defer_normal, .defer_error => return @alignCast(@fieldParentPtr("base", base)),
1171911719 else => return null,
1172011720 }
1172111721 }
1172211722 if (T == Namespace) {
1172311723 switch (base.tag) {
11724 .namespace => return @alignCast(@fieldParentPtr(*align(1) T, "base", base)),
11724 .namespace => return @alignCast(@fieldParentPtr("base", base)),
1172511725 else => return null,
1172611726 }
1172711727 }
1172811728 if (base.tag != T.base_tag)
1172911729 return null;
1173011730
11731 return @alignCast(@fieldParentPtr(*align(1) T, "base", base));
11731 return @alignCast(@fieldParentPtr("base", base));
1173211732 }
1173311733
1173411734 fn parent(base: *Scope) ?*Scope {
lib/std/zig/c_translation.zig+1-1
......@@ -414,7 +414,7 @@ pub const Macros = struct {
414414 }
415415
416416 pub fn WL_CONTAINER_OF(ptr: anytype, sample: anytype, comptime member: []const u8) @TypeOf(sample) {
417 return @fieldParentPtr(@TypeOf(sample), member, ptr);
417 return @fieldParentPtr(member, ptr);
418418 }
419419
420420 /// A 2-argument function-like macro defined as #define FOO(A, B) (A)(B)
src/Module.zig+2-2
......@@ -299,7 +299,7 @@ const ValueArena = struct {
299299 /// and must live until the matching call to release().
300300 pub fn acquire(self: *ValueArena, child_allocator: Allocator, out_arena_allocator: *std.heap.ArenaAllocator) Allocator {
301301 if (self.state_acquired) |state_acquired| {
302 return @fieldParentPtr(std.heap.ArenaAllocator, "state", state_acquired).allocator();
302 return @as(*std.heap.ArenaAllocator, @fieldParentPtr("state", state_acquired)).allocator();
303303 }
304304
305305 out_arena_allocator.* = self.state.promote(child_allocator);
......@@ -309,7 +309,7 @@ const ValueArena = struct {
309309
310310 /// Releases the allocator acquired by `acquire. `arena_allocator` must match the one passed to `acquire`.
311311 pub fn release(self: *ValueArena, arena_allocator: *std.heap.ArenaAllocator) void {
312 if (@fieldParentPtr(std.heap.ArenaAllocator, "state", self.state_acquired.?) == arena_allocator) {
312 if (@as(*std.heap.ArenaAllocator, @fieldParentPtr("state", self.state_acquired.?)) == arena_allocator) {
313313 self.state = self.state_acquired.?.*;
314314 self.state_acquired = null;
315315 }
src/link.zig+31-64
......@@ -188,15 +188,10 @@ pub const File = struct {
188188 emit: Compilation.Emit,
189189 options: OpenOptions,
190190 ) !*File {
191 const tag = Tag.fromObjectFormat(comp.root_mod.resolved_target.result.ofmt);
192 switch (tag) {
193 .c => {
194 const ptr = try C.open(arena, comp, emit, options);
195 return &ptr.base;
196 },
197 inline else => |t| {
198 if (build_options.only_c) unreachable;
199 const ptr = try t.Type().open(arena, comp, emit, options);
191 switch (Tag.fromObjectFormat(comp.root_mod.resolved_target.result.ofmt)) {
192 inline else => |tag| {
193 if (tag != .c and build_options.only_c) unreachable;
194 const ptr = try tag.Type().open(arena, comp, emit, options);
200195 return &ptr.base;
201196 },
202197 }
......@@ -208,25 +203,17 @@ pub const File = struct {
208203 emit: Compilation.Emit,
209204 options: OpenOptions,
210205 ) !*File {
211 const tag = Tag.fromObjectFormat(comp.root_mod.resolved_target.result.ofmt);
212 switch (tag) {
213 .c => {
214 const ptr = try C.createEmpty(arena, comp, emit, options);
215 return &ptr.base;
216 },
217 inline else => |t| {
218 if (build_options.only_c) unreachable;
219 const ptr = try t.Type().createEmpty(arena, comp, emit, options);
206 switch (Tag.fromObjectFormat(comp.root_mod.resolved_target.result.ofmt)) {
207 inline else => |tag| {
208 if (tag != .c and build_options.only_c) unreachable;
209 const ptr = try tag.Type().createEmpty(arena, comp, emit, options);
220210 return &ptr.base;
221211 },
222212 }
223213 }
224214
225215 pub fn cast(base: *File, comptime T: type) ?*T {
226 if (base.tag != T.base_tag)
227 return null;
228
229 return @fieldParentPtr(*T, "base", base);
216 return if (base.tag == T.base_tag) @fieldParentPtr("base", base) else null;
230217 }
231218
232219 pub fn makeWritable(base: *File) !void {
......@@ -383,7 +370,7 @@ pub const File = struct {
383370 .c => unreachable,
384371 .nvptx => unreachable,
385372 inline else => |t| {
386 return @fieldParentPtr(*t.Type(), "base", base).lowerUnnamedConst(val, decl_index);
373 return @as(*t.Type(), @fieldParentPtr("base", base)).lowerUnnamedConst(val, decl_index);
387374 },
388375 }
389376 }
......@@ -402,7 +389,7 @@ pub const File = struct {
402389 .c => unreachable,
403390 .nvptx => unreachable,
404391 inline else => |t| {
405 return @fieldParentPtr(*t.Type(), "base", base).getGlobalSymbol(name, lib_name);
392 return @as(*t.Type(), @fieldParentPtr("base", base)).getGlobalSymbol(name, lib_name);
406393 },
407394 }
408395 }
......@@ -412,12 +399,9 @@ pub const File = struct {
412399 const decl = module.declPtr(decl_index);
413400 assert(decl.has_tv);
414401 switch (base.tag) {
415 .c => {
416 return @fieldParentPtr(*C, "base", base).updateDecl(module, decl_index);
417 },
418402 inline else => |tag| {
419 if (build_options.only_c) unreachable;
420 return @fieldParentPtr(*tag.Type(), "base", base).updateDecl(module, decl_index);
403 if (tag != .c and build_options.only_c) unreachable;
404 return @as(*tag.Type(), @fieldParentPtr("base", base)).updateDecl(module, decl_index);
421405 },
422406 }
423407 }
......@@ -431,12 +415,9 @@ pub const File = struct {
431415 liveness: Liveness,
432416 ) UpdateDeclError!void {
433417 switch (base.tag) {
434 .c => {
435 return @fieldParentPtr(*C, "base", base).updateFunc(module, func_index, air, liveness);
436 },
437418 inline else => |tag| {
438 if (build_options.only_c) unreachable;
439 return @fieldParentPtr(*tag.Type(), "base", base).updateFunc(module, func_index, air, liveness);
419 if (tag != .c and build_options.only_c) unreachable;
420 return @as(*tag.Type(), @fieldParentPtr("base", base)).updateFunc(module, func_index, air, liveness);
440421 },
441422 }
442423 }
......@@ -446,12 +427,9 @@ pub const File = struct {
446427 assert(decl.has_tv);
447428 switch (base.tag) {
448429 .spirv, .nvptx => {},
449 .c => {
450 return @fieldParentPtr(*C, "base", base).updateDeclLineNumber(module, decl_index);
451 },
452430 inline else => |tag| {
453 if (build_options.only_c) unreachable;
454 return @fieldParentPtr(*tag.Type(), "base", base).updateDeclLineNumber(module, decl_index);
431 if (tag != .c and build_options.only_c) unreachable;
432 return @as(*tag.Type(), @fieldParentPtr("base", base)).updateDeclLineNumber(module, decl_index);
455433 },
456434 }
457435 }
......@@ -473,11 +451,9 @@ pub const File = struct {
473451 base.releaseLock();
474452 if (base.file) |f| f.close();
475453 switch (base.tag) {
476 .c => @fieldParentPtr(*C, "base", base).deinit(),
477
478454 inline else => |tag| {
479 if (build_options.only_c) unreachable;
480 @fieldParentPtr(*tag.Type(), "base", base).deinit();
455 if (tag != .c and build_options.only_c) unreachable;
456 @as(*tag.Type(), @fieldParentPtr("base", base)).deinit();
481457 },
482458 }
483459 }
......@@ -560,7 +536,7 @@ pub const File = struct {
560536 pub fn flush(base: *File, arena: Allocator, prog_node: *std.Progress.Node) FlushError!void {
561537 if (build_options.only_c) {
562538 assert(base.tag == .c);
563 return @fieldParentPtr(*C, "base", base).flush(arena, prog_node);
539 return @as(*C, @fieldParentPtr("base", base)).flush(arena, prog_node);
564540 }
565541 const comp = base.comp;
566542 if (comp.clang_preprocessor_mode == .yes or comp.clang_preprocessor_mode == .pch) {
......@@ -587,7 +563,7 @@ pub const File = struct {
587563 }
588564 switch (base.tag) {
589565 inline else => |tag| {
590 return @fieldParentPtr(*tag.Type(), "base", base).flush(arena, prog_node);
566 return @as(*tag.Type(), @fieldParentPtr("base", base)).flush(arena, prog_node);
591567 },
592568 }
593569 }
......@@ -596,12 +572,9 @@ pub const File = struct {
596572 /// rather than final output mode.
597573 pub fn flushModule(base: *File, arena: Allocator, prog_node: *std.Progress.Node) FlushError!void {
598574 switch (base.tag) {
599 .c => {
600 return @fieldParentPtr(*C, "base", base).flushModule(arena, prog_node);
601 },
602575 inline else => |tag| {
603 if (build_options.only_c) unreachable;
604 return @fieldParentPtr(*tag.Type(), "base", base).flushModule(arena, prog_node);
576 if (tag != .c and build_options.only_c) unreachable;
577 return @as(*tag.Type(), @fieldParentPtr("base", base)).flushModule(arena, prog_node);
605578 },
606579 }
607580 }
......@@ -609,12 +582,9 @@ pub const File = struct {
609582 /// Called when a Decl is deleted from the Module.
610583 pub fn freeDecl(base: *File, decl_index: InternPool.DeclIndex) void {
611584 switch (base.tag) {
612 .c => {
613 @fieldParentPtr(*C, "base", base).freeDecl(decl_index);
614 },
615585 inline else => |tag| {
616 if (build_options.only_c) unreachable;
617 @fieldParentPtr(*tag.Type(), "base", base).freeDecl(decl_index);
586 if (tag != .c and build_options.only_c) unreachable;
587 @as(*tag.Type(), @fieldParentPtr("base", base)).freeDecl(decl_index);
618588 },
619589 }
620590 }
......@@ -635,12 +605,9 @@ pub const File = struct {
635605 exports: []const *Module.Export,
636606 ) UpdateExportsError!void {
637607 switch (base.tag) {
638 .c => {
639 return @fieldParentPtr(*C, "base", base).updateExports(module, exported, exports);
640 },
641608 inline else => |tag| {
642 if (build_options.only_c) unreachable;
643 return @fieldParentPtr(*tag.Type(), "base", base).updateExports(module, exported, exports);
609 if (tag != .c and build_options.only_c) unreachable;
610 return @as(*tag.Type(), @fieldParentPtr("base", base)).updateExports(module, exported, exports);
644611 },
645612 }
646613 }
......@@ -664,7 +631,7 @@ pub const File = struct {
664631 .spirv => unreachable,
665632 .nvptx => unreachable,
666633 inline else => |tag| {
667 return @fieldParentPtr(*tag.Type(), "base", base).getDeclVAddr(decl_index, reloc_info);
634 return @as(*tag.Type(), @fieldParentPtr("base", base)).getDeclVAddr(decl_index, reloc_info);
668635 },
669636 }
670637 }
......@@ -683,7 +650,7 @@ pub const File = struct {
683650 .spirv => unreachable,
684651 .nvptx => unreachable,
685652 inline else => |tag| {
686 return @fieldParentPtr(*tag.Type(), "base", base).lowerAnonDecl(decl_val, decl_align, src_loc);
653 return @as(*tag.Type(), @fieldParentPtr("base", base)).lowerAnonDecl(decl_val, decl_align, src_loc);
687654 },
688655 }
689656 }
......@@ -695,7 +662,7 @@ pub const File = struct {
695662 .spirv => unreachable,
696663 .nvptx => unreachable,
697664 inline else => |tag| {
698 return @fieldParentPtr(*tag.Type(), "base", base).getAnonDeclVAddr(decl_val, reloc_info);
665 return @as(*tag.Type(), @fieldParentPtr("base", base)).getAnonDeclVAddr(decl_val, reloc_info);
699666 },
700667 }
701668 }
......@@ -714,7 +681,7 @@ pub const File = struct {
714681 => {},
715682
716683 inline else => |tag| {
717 return @fieldParentPtr(*tag.Type(), "base", base).deleteDeclExport(decl_index, name);
684 return @as(*tag.Type(), @fieldParentPtr("base", base)).deleteDeclExport(decl_index, name);
718685 },
719686 }
720687 }
src/link/tapi/parse.zig+15-24
......@@ -29,34 +29,28 @@ pub const Node = struct {
2929 map,
3030 list,
3131 value,
32
33 pub fn Type(comptime tag: Tag) type {
34 return switch (tag) {
35 .doc => Doc,
36 .map => Map,
37 .list => List,
38 .value => Value,
39 };
40 }
3241 };
3342
3443 pub fn cast(self: *const Node, comptime T: type) ?*const T {
3544 if (self.tag != T.base_tag) {
3645 return null;
3746 }
38 return @fieldParentPtr(*const T, "base", self);
47 return @fieldParentPtr("base", self);
3948 }
4049
4150 pub fn deinit(self: *Node, allocator: Allocator) void {
4251 switch (self.tag) {
43 .doc => {
44 const parent = @fieldParentPtr(*Node.Doc, "base", self);
45 parent.deinit(allocator);
46 allocator.destroy(parent);
47 },
48 .map => {
49 const parent = @fieldParentPtr(*Node.Map, "base", self);
50 parent.deinit(allocator);
51 allocator.destroy(parent);
52 },
53 .list => {
54 const parent = @fieldParentPtr(*Node.List, "base", self);
55 parent.deinit(allocator);
56 allocator.destroy(parent);
57 },
58 .value => {
59 const parent = @fieldParentPtr(*Node.Value, "base", self);
52 inline else => |tag| {
53 const parent: *tag.Type() = @fieldParentPtr("base", self);
6054 parent.deinit(allocator);
6155 allocator.destroy(parent);
6256 },
......@@ -69,12 +63,9 @@ pub const Node = struct {
6963 options: std.fmt.FormatOptions,
7064 writer: anytype,
7165 ) !void {
72 return switch (self.tag) {
73 .doc => @fieldParentPtr(*Node.Doc, "base", self).format(fmt, options, writer),
74 .map => @fieldParentPtr(*Node.Map, "base", self).format(fmt, options, writer),
75 .list => @fieldParentPtr(*Node.List, "base", self).format(fmt, options, writer),
76 .value => @fieldParentPtr(*Node.Value, "base", self).format(fmt, options, writer),
77 };
66 switch (self.tag) {
67 inline else => |tag| return @as(*tag.Type(), @fieldParentPtr("base", self)).format(fmt, options, writer),
68 }
7869 }
7970
8071 pub const Doc = struct {
src/register_manager.zig+1-1
......@@ -59,7 +59,7 @@ pub fn RegisterManager(
5959 pub const RegisterBitSet = StaticBitSet(tracked_registers.len);
6060
6161 fn getFunction(self: *Self) *Function {
62 return @alignCast(@fieldParentPtr(*align(1) Function, "register_manager", self));
62 return @alignCast(@fieldParentPtr("register_manager", self));
6363 }
6464
6565 fn excludeRegister(reg: Register, register_class: RegisterBitSet) bool {
test/behavior/align.zig+1-1
......@@ -693,5 +693,5 @@ test "zero-bit fields in extern struct pad fields appropriately" {
693693 try expect(@intFromPtr(&s) % 2 == 0);
694694 try expect(@intFromPtr(&s.y) - @intFromPtr(&s.x) == 2);
695695 try expect(@intFromPtr(&s.y) == @intFromPtr(&s.a));
696 try expect(@fieldParentPtr(*S, "a", &s.a) == &s);
696 try expect(@as(*S, @fieldParentPtr("a", &s.a)) == &s);
697697}
test/behavior/field_parent_ptr.zig+232-232
......@@ -12,14 +12,14 @@ test "@fieldParentPtr struct" {
1212 {
1313 const c: C = .{ .a = false };
1414 const pcf = &c.a;
15 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
15 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
1616 try expect(pc == &c);
1717 }
1818 {
1919 const c: C = .{ .a = false };
2020 const pcf = &c.a;
2121 var pc: *const C = undefined;
22 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
22 pc = @alignCast(@fieldParentPtr("a", pcf));
2323 try expect(pc == &c);
2424 }
2525 {
......@@ -27,7 +27,7 @@ test "@fieldParentPtr struct" {
2727 var pcf: @TypeOf(&c.a) = undefined;
2828 pcf = &c.a;
2929 var pc: *const C = undefined;
30 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
30 pc = @alignCast(@fieldParentPtr("a", pcf));
3131 try expect(pc == &c);
3232 }
3333 {
......@@ -36,21 +36,21 @@ test "@fieldParentPtr struct" {
3636 var pcf: @TypeOf(&c.a) = undefined;
3737 pcf = &c.a;
3838 var pc: *C = undefined;
39 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
39 pc = @alignCast(@fieldParentPtr("a", pcf));
4040 try expect(pc == &c);
4141 }
4242
4343 {
4444 const c: C = .{ .b = 666.667 };
4545 const pcf = &c.b;
46 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
46 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
4747 try expect(pc == &c);
4848 }
4949 {
5050 const c: C = .{ .b = 666.667 };
5151 const pcf = &c.b;
5252 var pc: *const C = undefined;
53 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
53 pc = @alignCast(@fieldParentPtr("b", pcf));
5454 try expect(pc == &c);
5555 }
5656 {
......@@ -58,7 +58,7 @@ test "@fieldParentPtr struct" {
5858 var pcf: @TypeOf(&c.b) = undefined;
5959 pcf = &c.b;
6060 var pc: *const C = undefined;
61 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
61 pc = @alignCast(@fieldParentPtr("b", pcf));
6262 try expect(pc == &c);
6363 }
6464 {
......@@ -67,21 +67,21 @@ test "@fieldParentPtr struct" {
6767 var pcf: @TypeOf(&c.b) = undefined;
6868 pcf = &c.b;
6969 var pc: *C = undefined;
70 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
70 pc = @alignCast(@fieldParentPtr("b", pcf));
7171 try expect(pc == &c);
7272 }
7373
7474 {
7575 const c: C = .{ .c = .{255} };
7676 const pcf = &c.c;
77 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
77 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
7878 try expect(pc == &c);
7979 }
8080 {
8181 const c: C = .{ .c = .{255} };
8282 const pcf = &c.c;
8383 var pc: *const C = undefined;
84 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
84 pc = @alignCast(@fieldParentPtr("c", pcf));
8585 try expect(pc == &c);
8686 }
8787 {
......@@ -89,7 +89,7 @@ test "@fieldParentPtr struct" {
8989 var pcf: @TypeOf(&c.c) = undefined;
9090 pcf = &c.c;
9191 var pc: *const C = undefined;
92 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
92 pc = @alignCast(@fieldParentPtr("c", pcf));
9393 try expect(pc == &c);
9494 }
9595 {
......@@ -98,21 +98,21 @@ test "@fieldParentPtr struct" {
9898 var pcf: @TypeOf(&c.c) = undefined;
9999 pcf = &c.c;
100100 var pc: *C = undefined;
101 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
101 pc = @alignCast(@fieldParentPtr("c", pcf));
102102 try expect(pc == &c);
103103 }
104104
105105 {
106106 const c: C = .{ .d = -1111111111 };
107107 const pcf = &c.d;
108 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
108 const pc: *const C = @alignCast(@fieldParentPtr("d", pcf));
109109 try expect(pc == &c);
110110 }
111111 {
112112 const c: C = .{ .d = -1111111111 };
113113 const pcf = &c.d;
114114 var pc: *const C = undefined;
115 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
115 pc = @alignCast(@fieldParentPtr("d", pcf));
116116 try expect(pc == &c);
117117 }
118118 {
......@@ -120,7 +120,7 @@ test "@fieldParentPtr struct" {
120120 var pcf: @TypeOf(&c.d) = undefined;
121121 pcf = &c.d;
122122 var pc: *const C = undefined;
123 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
123 pc = @alignCast(@fieldParentPtr("d", pcf));
124124 try expect(pc == &c);
125125 }
126126 {
......@@ -129,7 +129,7 @@ test "@fieldParentPtr struct" {
129129 var pcf: @TypeOf(&c.d) = undefined;
130130 pcf = &c.d;
131131 var pc: *C = undefined;
132 pc = @alignCast(@fieldParentPtr(*align(1) C, "d", pcf));
132 pc = @alignCast(@fieldParentPtr("d", pcf));
133133 try expect(pc == &c);
134134 }
135135}
......@@ -145,14 +145,14 @@ test "@fieldParentPtr extern struct" {
145145 {
146146 const c: C = .{ .a = false };
147147 const pcf = &c.a;
148 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
148 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
149149 try expect(pc == &c);
150150 }
151151 {
152152 const c: C = .{ .a = false };
153153 const pcf = &c.a;
154154 var pc: *const C = undefined;
155 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
155 pc = @alignCast(@fieldParentPtr("a", pcf));
156156 try expect(pc == &c);
157157 }
158158 {
......@@ -160,7 +160,7 @@ test "@fieldParentPtr extern struct" {
160160 var pcf: @TypeOf(&c.a) = undefined;
161161 pcf = &c.a;
162162 var pc: *const C = undefined;
163 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
163 pc = @alignCast(@fieldParentPtr("a", pcf));
164164 try expect(pc == &c);
165165 }
166166 {
......@@ -169,21 +169,21 @@ test "@fieldParentPtr extern struct" {
169169 var pcf: @TypeOf(&c.a) = undefined;
170170 pcf = &c.a;
171171 var pc: *C = undefined;
172 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
172 pc = @alignCast(@fieldParentPtr("a", pcf));
173173 try expect(pc == &c);
174174 }
175175
176176 {
177177 const c: C = .{ .b = 666.667 };
178178 const pcf = &c.b;
179 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
179 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
180180 try expect(pc == &c);
181181 }
182182 {
183183 const c: C = .{ .b = 666.667 };
184184 const pcf = &c.b;
185185 var pc: *const C = undefined;
186 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
186 pc = @alignCast(@fieldParentPtr("b", pcf));
187187 try expect(pc == &c);
188188 }
189189 {
......@@ -191,7 +191,7 @@ test "@fieldParentPtr extern struct" {
191191 var pcf: @TypeOf(&c.b) = undefined;
192192 pcf = &c.b;
193193 var pc: *const C = undefined;
194 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
194 pc = @alignCast(@fieldParentPtr("b", pcf));
195195 try expect(pc == &c);
196196 }
197197 {
......@@ -200,21 +200,21 @@ test "@fieldParentPtr extern struct" {
200200 var pcf: @TypeOf(&c.b) = undefined;
201201 pcf = &c.b;
202202 var pc: *C = undefined;
203 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
203 pc = @alignCast(@fieldParentPtr("b", pcf));
204204 try expect(pc == &c);
205205 }
206206
207207 {
208208 const c: C = .{ .c = .{ .x = 255 } };
209209 const pcf = &c.c;
210 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
210 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
211211 try expect(pc == &c);
212212 }
213213 {
214214 const c: C = .{ .c = .{ .x = 255 } };
215215 const pcf = &c.c;
216216 var pc: *const C = undefined;
217 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
217 pc = @alignCast(@fieldParentPtr("c", pcf));
218218 try expect(pc == &c);
219219 }
220220 {
......@@ -222,7 +222,7 @@ test "@fieldParentPtr extern struct" {
222222 var pcf: @TypeOf(&c.c) = undefined;
223223 pcf = &c.c;
224224 var pc: *const C = undefined;
225 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
225 pc = @alignCast(@fieldParentPtr("c", pcf));
226226 try expect(pc == &c);
227227 }
228228 {
......@@ -231,21 +231,21 @@ test "@fieldParentPtr extern struct" {
231231 var pcf: @TypeOf(&c.c) = undefined;
232232 pcf = &c.c;
233233 var pc: *C = undefined;
234 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
234 pc = @alignCast(@fieldParentPtr("c", pcf));
235235 try expect(pc == &c);
236236 }
237237
238238 {
239239 const c: C = .{ .d = -1111111111 };
240240 const pcf = &c.d;
241 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
241 const pc: *const C = @alignCast(@fieldParentPtr("d", pcf));
242242 try expect(pc == &c);
243243 }
244244 {
245245 const c: C = .{ .d = -1111111111 };
246246 const pcf = &c.d;
247247 var pc: *const C = undefined;
248 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
248 pc = @alignCast(@fieldParentPtr("d", pcf));
249249 try expect(pc == &c);
250250 }
251251 {
......@@ -253,7 +253,7 @@ test "@fieldParentPtr extern struct" {
253253 var pcf: @TypeOf(&c.d) = undefined;
254254 pcf = &c.d;
255255 var pc: *const C = undefined;
256 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
256 pc = @alignCast(@fieldParentPtr("d", pcf));
257257 try expect(pc == &c);
258258 }
259259 {
......@@ -262,7 +262,7 @@ test "@fieldParentPtr extern struct" {
262262 var pcf: @TypeOf(&c.d) = undefined;
263263 pcf = &c.d;
264264 var pc: *C = undefined;
265 pc = @alignCast(@fieldParentPtr(*align(1) C, "d", pcf));
265 pc = @alignCast(@fieldParentPtr("d", pcf));
266266 try expect(pc == &c);
267267 }
268268}
......@@ -277,14 +277,14 @@ test "@fieldParentPtr extern struct first zero-bit field" {
277277 {
278278 const c: C = .{ .a = 0 };
279279 const pcf = &c.a;
280 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
280 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
281281 try expect(pc == &c);
282282 }
283283 {
284284 const c: C = .{ .a = 0 };
285285 const pcf = &c.a;
286286 var pc: *const C = undefined;
287 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
287 pc = @alignCast(@fieldParentPtr("a", pcf));
288288 try expect(pc == &c);
289289 }
290290 {
......@@ -292,7 +292,7 @@ test "@fieldParentPtr extern struct first zero-bit field" {
292292 var pcf: @TypeOf(&c.a) = undefined;
293293 pcf = &c.a;
294294 var pc: *const C = undefined;
295 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
295 pc = @alignCast(@fieldParentPtr("a", pcf));
296296 try expect(pc == &c);
297297 }
298298 {
......@@ -301,21 +301,21 @@ test "@fieldParentPtr extern struct first zero-bit field" {
301301 var pcf: @TypeOf(&c.a) = undefined;
302302 pcf = &c.a;
303303 var pc: *C = undefined;
304 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
304 pc = @alignCast(@fieldParentPtr("a", pcf));
305305 try expect(pc == &c);
306306 }
307307
308308 {
309309 const c: C = .{ .b = 666.667 };
310310 const pcf = &c.b;
311 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
311 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
312312 try expect(pc == &c);
313313 }
314314 {
315315 const c: C = .{ .b = 666.667 };
316316 const pcf = &c.b;
317317 var pc: *const C = undefined;
318 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
318 pc = @alignCast(@fieldParentPtr("b", pcf));
319319 try expect(pc == &c);
320320 }
321321 {
......@@ -323,7 +323,7 @@ test "@fieldParentPtr extern struct first zero-bit field" {
323323 var pcf: @TypeOf(&c.b) = undefined;
324324 pcf = &c.b;
325325 var pc: *const C = undefined;
326 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
326 pc = @alignCast(@fieldParentPtr("b", pcf));
327327 try expect(pc == &c);
328328 }
329329 {
......@@ -332,21 +332,21 @@ test "@fieldParentPtr extern struct first zero-bit field" {
332332 var pcf: @TypeOf(&c.b) = undefined;
333333 pcf = &c.b;
334334 var pc: *C = undefined;
335 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
335 pc = @alignCast(@fieldParentPtr("b", pcf));
336336 try expect(pc == &c);
337337 }
338338
339339 {
340340 const c: C = .{ .c = -1111111111 };
341341 const pcf = &c.c;
342 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
342 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
343343 try expect(pc == &c);
344344 }
345345 {
346346 const c: C = .{ .c = -1111111111 };
347347 const pcf = &c.c;
348348 var pc: *const C = undefined;
349 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
349 pc = @alignCast(@fieldParentPtr("c", pcf));
350350 try expect(pc == &c);
351351 }
352352 {
......@@ -354,7 +354,7 @@ test "@fieldParentPtr extern struct first zero-bit field" {
354354 var pcf: @TypeOf(&c.c) = undefined;
355355 pcf = &c.c;
356356 var pc: *const C = undefined;
357 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
357 pc = @alignCast(@fieldParentPtr("c", pcf));
358358 try expect(pc == &c);
359359 }
360360 {
......@@ -363,7 +363,7 @@ test "@fieldParentPtr extern struct first zero-bit field" {
363363 var pcf: @TypeOf(&c.c) = undefined;
364364 pcf = &c.c;
365365 var pc: *C = undefined;
366 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
366 pc = @alignCast(@fieldParentPtr("c", pcf));
367367 try expect(pc == &c);
368368 }
369369}
......@@ -378,14 +378,14 @@ test "@fieldParentPtr extern struct middle zero-bit field" {
378378 {
379379 const c: C = .{ .a = 666.667 };
380380 const pcf = &c.a;
381 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
381 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
382382 try expect(pc == &c);
383383 }
384384 {
385385 const c: C = .{ .a = 666.667 };
386386 const pcf = &c.a;
387387 var pc: *const C = undefined;
388 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
388 pc = @alignCast(@fieldParentPtr("a", pcf));
389389 try expect(pc == &c);
390390 }
391391 {
......@@ -393,7 +393,7 @@ test "@fieldParentPtr extern struct middle zero-bit field" {
393393 var pcf: @TypeOf(&c.a) = undefined;
394394 pcf = &c.a;
395395 var pc: *const C = undefined;
396 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
396 pc = @alignCast(@fieldParentPtr("a", pcf));
397397 try expect(pc == &c);
398398 }
399399 {
......@@ -402,21 +402,21 @@ test "@fieldParentPtr extern struct middle zero-bit field" {
402402 var pcf: @TypeOf(&c.a) = undefined;
403403 pcf = &c.a;
404404 var pc: *C = undefined;
405 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
405 pc = @alignCast(@fieldParentPtr("a", pcf));
406406 try expect(pc == &c);
407407 }
408408
409409 {
410410 const c: C = .{ .b = 0 };
411411 const pcf = &c.b;
412 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
412 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
413413 try expect(pc == &c);
414414 }
415415 {
416416 const c: C = .{ .b = 0 };
417417 const pcf = &c.b;
418418 var pc: *const C = undefined;
419 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
419 pc = @alignCast(@fieldParentPtr("b", pcf));
420420 try expect(pc == &c);
421421 }
422422 {
......@@ -424,7 +424,7 @@ test "@fieldParentPtr extern struct middle zero-bit field" {
424424 var pcf: @TypeOf(&c.b) = undefined;
425425 pcf = &c.b;
426426 var pc: *const C = undefined;
427 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
427 pc = @alignCast(@fieldParentPtr("b", pcf));
428428 try expect(pc == &c);
429429 }
430430 {
......@@ -433,21 +433,21 @@ test "@fieldParentPtr extern struct middle zero-bit field" {
433433 var pcf: @TypeOf(&c.b) = undefined;
434434 pcf = &c.b;
435435 var pc: *C = undefined;
436 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
436 pc = @alignCast(@fieldParentPtr("b", pcf));
437437 try expect(pc == &c);
438438 }
439439
440440 {
441441 const c: C = .{ .c = -1111111111 };
442442 const pcf = &c.c;
443 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
443 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
444444 try expect(pc == &c);
445445 }
446446 {
447447 const c: C = .{ .c = -1111111111 };
448448 const pcf = &c.c;
449449 var pc: *const C = undefined;
450 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
450 pc = @alignCast(@fieldParentPtr("c", pcf));
451451 try expect(pc == &c);
452452 }
453453 {
......@@ -455,7 +455,7 @@ test "@fieldParentPtr extern struct middle zero-bit field" {
455455 var pcf: @TypeOf(&c.c) = undefined;
456456 pcf = &c.c;
457457 var pc: *const C = undefined;
458 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
458 pc = @alignCast(@fieldParentPtr("c", pcf));
459459 try expect(pc == &c);
460460 }
461461 {
......@@ -464,7 +464,7 @@ test "@fieldParentPtr extern struct middle zero-bit field" {
464464 var pcf: @TypeOf(&c.c) = undefined;
465465 pcf = &c.c;
466466 var pc: *C = undefined;
467 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
467 pc = @alignCast(@fieldParentPtr("c", pcf));
468468 try expect(pc == &c);
469469 }
470470}
......@@ -479,14 +479,14 @@ test "@fieldParentPtr extern struct last zero-bit field" {
479479 {
480480 const c: C = .{ .a = 666.667 };
481481 const pcf = &c.a;
482 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
482 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
483483 try expect(pc == &c);
484484 }
485485 {
486486 const c: C = .{ .a = 666.667 };
487487 const pcf = &c.a;
488488 var pc: *const C = undefined;
489 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
489 pc = @alignCast(@fieldParentPtr("a", pcf));
490490 try expect(pc == &c);
491491 }
492492 {
......@@ -494,7 +494,7 @@ test "@fieldParentPtr extern struct last zero-bit field" {
494494 var pcf: @TypeOf(&c.a) = undefined;
495495 pcf = &c.a;
496496 var pc: *const C = undefined;
497 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
497 pc = @alignCast(@fieldParentPtr("a", pcf));
498498 try expect(pc == &c);
499499 }
500500 {
......@@ -503,21 +503,21 @@ test "@fieldParentPtr extern struct last zero-bit field" {
503503 var pcf: @TypeOf(&c.a) = undefined;
504504 pcf = &c.a;
505505 var pc: *C = undefined;
506 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
506 pc = @alignCast(@fieldParentPtr("a", pcf));
507507 try expect(pc == &c);
508508 }
509509
510510 {
511511 const c: C = .{ .b = -1111111111 };
512512 const pcf = &c.b;
513 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
513 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
514514 try expect(pc == &c);
515515 }
516516 {
517517 const c: C = .{ .b = -1111111111 };
518518 const pcf = &c.b;
519519 var pc: *const C = undefined;
520 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
520 pc = @alignCast(@fieldParentPtr("b", pcf));
521521 try expect(pc == &c);
522522 }
523523 {
......@@ -525,7 +525,7 @@ test "@fieldParentPtr extern struct last zero-bit field" {
525525 var pcf: @TypeOf(&c.b) = undefined;
526526 pcf = &c.b;
527527 var pc: *const C = undefined;
528 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
528 pc = @alignCast(@fieldParentPtr("b", pcf));
529529 try expect(pc == &c);
530530 }
531531 {
......@@ -534,21 +534,21 @@ test "@fieldParentPtr extern struct last zero-bit field" {
534534 var pcf: @TypeOf(&c.b) = undefined;
535535 pcf = &c.b;
536536 var pc: *C = undefined;
537 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
537 pc = @alignCast(@fieldParentPtr("b", pcf));
538538 try expect(pc == &c);
539539 }
540540
541541 {
542542 const c: C = .{ .c = 0 };
543543 const pcf = &c.c;
544 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
544 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
545545 try expect(pc == &c);
546546 }
547547 {
548548 const c: C = .{ .c = 0 };
549549 const pcf = &c.c;
550550 var pc: *const C = undefined;
551 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
551 pc = @alignCast(@fieldParentPtr("c", pcf));
552552 try expect(pc == &c);
553553 }
554554 {
......@@ -556,7 +556,7 @@ test "@fieldParentPtr extern struct last zero-bit field" {
556556 var pcf: @TypeOf(&c.c) = undefined;
557557 pcf = &c.c;
558558 var pc: *const C = undefined;
559 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
559 pc = @alignCast(@fieldParentPtr("c", pcf));
560560 try expect(pc == &c);
561561 }
562562 {
......@@ -565,7 +565,7 @@ test "@fieldParentPtr extern struct last zero-bit field" {
565565 var pcf: @TypeOf(&c.c) = undefined;
566566 pcf = &c.c;
567567 var pc: *C = undefined;
568 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
568 pc = @alignCast(@fieldParentPtr("c", pcf));
569569 try expect(pc == &c);
570570 }
571571}
......@@ -585,14 +585,14 @@ test "@fieldParentPtr unaligned packed struct" {
585585 {
586586 const c: C = .{ .a = false };
587587 const pcf = &c.a;
588 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
588 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
589589 try expect(pc == &c);
590590 }
591591 {
592592 const c: C = .{ .a = false };
593593 const pcf = &c.a;
594594 var pc: *const C = undefined;
595 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
595 pc = @alignCast(@fieldParentPtr("a", pcf));
596596 try expect(pc == &c);
597597 }
598598 {
......@@ -600,7 +600,7 @@ test "@fieldParentPtr unaligned packed struct" {
600600 var pcf: @TypeOf(&c.a) = undefined;
601601 pcf = &c.a;
602602 var pc: *const C = undefined;
603 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
603 pc = @alignCast(@fieldParentPtr("a", pcf));
604604 try expect(pc == &c);
605605 }
606606 {
......@@ -609,21 +609,21 @@ test "@fieldParentPtr unaligned packed struct" {
609609 var pcf: @TypeOf(&c.a) = undefined;
610610 pcf = &c.a;
611611 var pc: *C = undefined;
612 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
612 pc = @alignCast(@fieldParentPtr("a", pcf));
613613 try expect(pc == &c);
614614 }
615615
616616 {
617617 const c: C = .{ .b = 666.667 };
618618 const pcf = &c.b;
619 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
619 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
620620 try expect(pc == &c);
621621 }
622622 {
623623 const c: C = .{ .b = 666.667 };
624624 const pcf = &c.b;
625625 var pc: *const C = undefined;
626 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
626 pc = @alignCast(@fieldParentPtr("b", pcf));
627627 try expect(pc == &c);
628628 }
629629 {
......@@ -631,7 +631,7 @@ test "@fieldParentPtr unaligned packed struct" {
631631 var pcf: @TypeOf(&c.b) = undefined;
632632 pcf = &c.b;
633633 var pc: *const C = undefined;
634 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
634 pc = @alignCast(@fieldParentPtr("b", pcf));
635635 try expect(pc == &c);
636636 }
637637 {
......@@ -640,21 +640,21 @@ test "@fieldParentPtr unaligned packed struct" {
640640 var pcf: @TypeOf(&c.b) = undefined;
641641 pcf = &c.b;
642642 var pc: *C = undefined;
643 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
643 pc = @alignCast(@fieldParentPtr("b", pcf));
644644 try expect(pc == &c);
645645 }
646646
647647 {
648648 const c: C = .{ .c = .{ .x = 255 } };
649649 const pcf = &c.c;
650 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
650 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
651651 try expect(pc == &c);
652652 }
653653 {
654654 const c: C = .{ .c = .{ .x = 255 } };
655655 const pcf = &c.c;
656656 var pc: *const C = undefined;
657 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
657 pc = @alignCast(@fieldParentPtr("c", pcf));
658658 try expect(pc == &c);
659659 }
660660 {
......@@ -662,7 +662,7 @@ test "@fieldParentPtr unaligned packed struct" {
662662 var pcf: @TypeOf(&c.c) = undefined;
663663 pcf = &c.c;
664664 var pc: *const C = undefined;
665 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
665 pc = @alignCast(@fieldParentPtr("c", pcf));
666666 try expect(pc == &c);
667667 }
668668 {
......@@ -671,21 +671,21 @@ test "@fieldParentPtr unaligned packed struct" {
671671 var pcf: @TypeOf(&c.c) = undefined;
672672 pcf = &c.c;
673673 var pc: *C = undefined;
674 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
674 pc = @alignCast(@fieldParentPtr("c", pcf));
675675 try expect(pc == &c);
676676 }
677677
678678 {
679679 const c: C = .{ .d = -1111111111 };
680680 const pcf = &c.d;
681 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
681 const pc: *const C = @alignCast(@fieldParentPtr("d", pcf));
682682 try expect(pc == &c);
683683 }
684684 {
685685 const c: C = .{ .d = -1111111111 };
686686 const pcf = &c.d;
687687 var pc: *const C = undefined;
688 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
688 pc = @alignCast(@fieldParentPtr("d", pcf));
689689 try expect(pc == &c);
690690 }
691691 {
......@@ -693,7 +693,7 @@ test "@fieldParentPtr unaligned packed struct" {
693693 var pcf: @TypeOf(&c.d) = undefined;
694694 pcf = &c.d;
695695 var pc: *const C = undefined;
696 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
696 pc = @alignCast(@fieldParentPtr("d", pcf));
697697 try expect(pc == &c);
698698 }
699699 {
......@@ -702,7 +702,7 @@ test "@fieldParentPtr unaligned packed struct" {
702702 var pcf: @TypeOf(&c.d) = undefined;
703703 pcf = &c.d;
704704 var pc: *C = undefined;
705 pc = @alignCast(@fieldParentPtr(*align(1) C, "d", pcf));
705 pc = @alignCast(@fieldParentPtr("d", pcf));
706706 try expect(pc == &c);
707707 }
708708}
......@@ -722,14 +722,14 @@ test "@fieldParentPtr aligned packed struct" {
722722 {
723723 const c: C = .{ .a = 666.667 };
724724 const pcf = &c.a;
725 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
725 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
726726 try expect(pc == &c);
727727 }
728728 {
729729 const c: C = .{ .a = 666.667 };
730730 const pcf = &c.a;
731731 var pc: *const C = undefined;
732 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
732 pc = @alignCast(@fieldParentPtr("a", pcf));
733733 try expect(pc == &c);
734734 }
735735 {
......@@ -737,7 +737,7 @@ test "@fieldParentPtr aligned packed struct" {
737737 var pcf: @TypeOf(&c.a) = undefined;
738738 pcf = &c.a;
739739 var pc: *const C = undefined;
740 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
740 pc = @alignCast(@fieldParentPtr("a", pcf));
741741 try expect(pc == &c);
742742 }
743743 {
......@@ -746,21 +746,21 @@ test "@fieldParentPtr aligned packed struct" {
746746 var pcf: @TypeOf(&c.a) = undefined;
747747 pcf = &c.a;
748748 var pc: *C = undefined;
749 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
749 pc = @alignCast(@fieldParentPtr("a", pcf));
750750 try expect(pc == &c);
751751 }
752752
753753 {
754754 const c: C = .{ .b = -1111111111 };
755755 const pcf = &c.b;
756 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
756 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
757757 try expect(pc == &c);
758758 }
759759 {
760760 const c: C = .{ .b = -1111111111 };
761761 const pcf = &c.b;
762762 var pc: *const C = undefined;
763 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
763 pc = @alignCast(@fieldParentPtr("b", pcf));
764764 try expect(pc == &c);
765765 }
766766 {
......@@ -768,7 +768,7 @@ test "@fieldParentPtr aligned packed struct" {
768768 var pcf: @TypeOf(&c.b) = undefined;
769769 pcf = &c.b;
770770 var pc: *const C = undefined;
771 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
771 pc = @alignCast(@fieldParentPtr("b", pcf));
772772 try expect(pc == &c);
773773 }
774774 {
......@@ -777,21 +777,21 @@ test "@fieldParentPtr aligned packed struct" {
777777 var pcf: @TypeOf(&c.b) = undefined;
778778 pcf = &c.b;
779779 var pc: *C = undefined;
780 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
780 pc = @alignCast(@fieldParentPtr("b", pcf));
781781 try expect(pc == &c);
782782 }
783783
784784 {
785785 const c: C = .{ .c = .{ .x = 255 } };
786786 const pcf = &c.c;
787 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
787 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
788788 try expect(pc == &c);
789789 }
790790 {
791791 const c: C = .{ .c = .{ .x = 255 } };
792792 const pcf = &c.c;
793793 var pc: *const C = undefined;
794 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
794 pc = @alignCast(@fieldParentPtr("c", pcf));
795795 try expect(pc == &c);
796796 }
797797 {
......@@ -799,7 +799,7 @@ test "@fieldParentPtr aligned packed struct" {
799799 var pcf: @TypeOf(&c.c) = undefined;
800800 pcf = &c.c;
801801 var pc: *const C = undefined;
802 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
802 pc = @alignCast(@fieldParentPtr("c", pcf));
803803 try expect(pc == &c);
804804 }
805805 {
......@@ -808,21 +808,21 @@ test "@fieldParentPtr aligned packed struct" {
808808 var pcf: @TypeOf(&c.c) = undefined;
809809 pcf = &c.c;
810810 var pc: *C = undefined;
811 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
811 pc = @alignCast(@fieldParentPtr("c", pcf));
812812 try expect(pc == &c);
813813 }
814814
815815 {
816816 const c: C = .{ .d = false };
817817 const pcf = &c.d;
818 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
818 const pc: *const C = @alignCast(@fieldParentPtr("d", pcf));
819819 try expect(pc == &c);
820820 }
821821 {
822822 const c: C = .{ .d = false };
823823 const pcf = &c.d;
824824 var pc: *const C = undefined;
825 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
825 pc = @alignCast(@fieldParentPtr("d", pcf));
826826 try expect(pc == &c);
827827 }
828828 {
......@@ -830,7 +830,7 @@ test "@fieldParentPtr aligned packed struct" {
830830 var pcf: @TypeOf(&c.d) = undefined;
831831 pcf = &c.d;
832832 var pc: *const C = undefined;
833 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
833 pc = @alignCast(@fieldParentPtr("d", pcf));
834834 try expect(pc == &c);
835835 }
836836 {
......@@ -839,7 +839,7 @@ test "@fieldParentPtr aligned packed struct" {
839839 var pcf: @TypeOf(&c.d) = undefined;
840840 pcf = &c.d;
841841 var pc: *C = undefined;
842 pc = @alignCast(@fieldParentPtr(*align(1) C, "d", pcf));
842 pc = @alignCast(@fieldParentPtr("d", pcf));
843843 try expect(pc == &c);
844844 }
845845}
......@@ -862,11 +862,11 @@ test "@fieldParentPtr nested packed struct" {
862862 {
863863 const c: C = .{ .a = 0, .b = .{ .a = 0, .b = .{ .a = 0 } } };
864864 const pcbba = &c.b.b.a;
865 const pcbb: @TypeOf(&c.b.b) = @alignCast(@fieldParentPtr(*align(1) const @TypeOf(c.b.b), "a", pcbba));
865 const pcbb: @TypeOf(&c.b.b) = @alignCast(@fieldParentPtr("a", pcbba));
866866 try expect(pcbb == &c.b.b);
867 const pcb: @TypeOf(&c.b) = @alignCast(@fieldParentPtr(*align(1) const @TypeOf(c.b), "b", pcbb));
867 const pcb: @TypeOf(&c.b) = @alignCast(@fieldParentPtr("b", pcbb));
868868 try expect(pcb == &c.b);
869 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcb));
869 const pc: *const C = @alignCast(@fieldParentPtr("b", pcb));
870870 try expect(pc == &c);
871871 }
872872
......@@ -876,13 +876,13 @@ test "@fieldParentPtr nested packed struct" {
876876 var pcbba: @TypeOf(&c.b.b.a) = undefined;
877877 pcbba = &c.b.b.a;
878878 var pcbb: @TypeOf(&c.b.b) = undefined;
879 pcbb = @alignCast(@fieldParentPtr(*align(1) @TypeOf(c.b.b), "a", pcbba));
879 pcbb = @alignCast(@fieldParentPtr("a", pcbba));
880880 try expect(pcbb == &c.b.b);
881881 var pcb: @TypeOf(&c.b) = undefined;
882 pcb = @alignCast(@fieldParentPtr(*align(1) @TypeOf(c.b), "b", pcbb));
882 pcb = @alignCast(@fieldParentPtr("b", pcbb));
883883 try expect(pcb == &c.b);
884884 var pc: *C = undefined;
885 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcb));
885 pc = @alignCast(@fieldParentPtr("b", pcb));
886886 try expect(pc == &c);
887887 }
888888 }
......@@ -901,11 +901,11 @@ test "@fieldParentPtr nested packed struct" {
901901 {
902902 const c: C = .{ .a = 0, .b = .{ .a = 0, .b = .{ .a = 0 } } };
903903 const pcbba = &c.b.b.a;
904 const pcbb: @TypeOf(&c.b.b) = @alignCast(@fieldParentPtr(*align(1:17:4) const @TypeOf(c.b.b), "a", pcbba));
904 const pcbb: @TypeOf(&c.b.b) = @alignCast(@fieldParentPtr("a", pcbba));
905905 try expect(pcbb == &c.b.b);
906 const pcb: @TypeOf(&c.b) = @alignCast(@fieldParentPtr(*align(1:8:4) const @TypeOf(c.b), "b", pcbb));
906 const pcb: @TypeOf(&c.b) = @alignCast(@fieldParentPtr("b", pcbb));
907907 try expect(pcb == &c.b);
908 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcb));
908 const pc: *const C = @alignCast(@fieldParentPtr("b", pcb));
909909 try expect(pc == &c);
910910 }
911911
......@@ -915,13 +915,13 @@ test "@fieldParentPtr nested packed struct" {
915915 var pcbba: @TypeOf(&c.b.b.a) = undefined;
916916 pcbba = &c.b.b.a;
917917 var pcbb: @TypeOf(&c.b.b) = undefined;
918 pcbb = @alignCast(@fieldParentPtr(*align(1:17:4) @TypeOf(c.b.b), "a", pcbba));
918 pcbb = @alignCast(@fieldParentPtr("a", pcbba));
919919 try expect(pcbb == &c.b.b);
920920 var pcb: @TypeOf(&c.b) = undefined;
921 pcb = @alignCast(@fieldParentPtr(*align(1:8:4) @TypeOf(c.b), "b", pcbb));
921 pcb = @alignCast(@fieldParentPtr("b", pcbb));
922922 try expect(pcb == &c.b);
923923 var pc: *C = undefined;
924 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcb));
924 pc = @alignCast(@fieldParentPtr("b", pcb));
925925 try expect(pc == &c);
926926 }
927927 }
......@@ -940,11 +940,11 @@ test "@fieldParentPtr nested packed struct" {
940940 {
941941 const c: C = .{ .a = 0, .b = .{ .a = 0, .b = .{ .a = 0 } } };
942942 const pcbba = &c.b.b.a;
943 const pcbb: @TypeOf(&c.b.b) = @alignCast(@fieldParentPtr(*align(1) const @TypeOf(c.b.b), "a", pcbba));
943 const pcbb: @TypeOf(&c.b.b) = @alignCast(@fieldParentPtr("a", pcbba));
944944 try expect(pcbb == &c.b.b);
945 const pcb: @TypeOf(&c.b) = @alignCast(@fieldParentPtr(*align(1:9:3) const @TypeOf(c.b), "b", pcbb));
945 const pcb: @TypeOf(&c.b) = @alignCast(@fieldParentPtr("b", pcbb));
946946 try expect(pcb == &c.b);
947 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcb));
947 const pc: *const C = @alignCast(@fieldParentPtr("b", pcb));
948948 try expect(pc == &c);
949949 }
950950
......@@ -954,13 +954,13 @@ test "@fieldParentPtr nested packed struct" {
954954 var pcbba: @TypeOf(&c.b.b.a) = undefined;
955955 pcbba = &c.b.b.a;
956956 var pcbb: @TypeOf(&c.b.b) = undefined;
957 pcbb = @alignCast(@fieldParentPtr(*align(1) @TypeOf(c.b.b), "a", pcbba));
957 pcbb = @alignCast(@fieldParentPtr("a", pcbba));
958958 try expect(pcbb == &c.b.b);
959959 var pcb: @TypeOf(&c.b) = undefined;
960 pcb = @alignCast(@fieldParentPtr(*align(1:9:3) @TypeOf(c.b), "b", pcbb));
960 pcb = @alignCast(@fieldParentPtr("b", pcbb));
961961 try expect(pcb == &c.b);
962962 var pc: *C = undefined;
963 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcb));
963 pc = @alignCast(@fieldParentPtr("b", pcb));
964964 try expect(pc == &c);
965965 }
966966 }
......@@ -979,11 +979,11 @@ test "@fieldParentPtr nested packed struct" {
979979 {
980980 const c: C = .{ .a = 0, .b = .{ .a = 0, .b = .{ .a = 0 } } };
981981 const pcbba = &c.b.b.a;
982 const pcbb: @TypeOf(&c.b.b) = @alignCast(@fieldParentPtr(*align(1:17:4) const @TypeOf(c.b.b), "a", pcbba));
982 const pcbb: @TypeOf(&c.b.b) = @alignCast(@fieldParentPtr("a", pcbba));
983983 try expect(pcbb == &c.b.b);
984 const pcb: @TypeOf(&c.b) = @alignCast(@fieldParentPtr(*align(1:9:4) const @TypeOf(c.b), "b", pcbb));
984 const pcb: @TypeOf(&c.b) = @alignCast(@fieldParentPtr("b", pcbb));
985985 try expect(pcb == &c.b);
986 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcb));
986 const pc: *const C = @alignCast(@fieldParentPtr("b", pcb));
987987 try expect(pc == &c);
988988 }
989989
......@@ -993,13 +993,13 @@ test "@fieldParentPtr nested packed struct" {
993993 var pcbba: @TypeOf(&c.b.b.a) = undefined;
994994 pcbba = &c.b.b.a;
995995 var pcbb: @TypeOf(&c.b.b) = undefined;
996 pcbb = @alignCast(@fieldParentPtr(*align(1:17:4) @TypeOf(c.b.b), "a", pcbba));
996 pcbb = @alignCast(@fieldParentPtr("a", pcbba));
997997 try expect(pcbb == &c.b.b);
998998 var pcb: @TypeOf(&c.b) = undefined;
999 pcb = @alignCast(@fieldParentPtr(*align(1:9:4) @TypeOf(c.b), "b", pcbb));
999 pcb = @alignCast(@fieldParentPtr("b", pcbb));
10001000 try expect(pcb == &c.b);
10011001 var pc: *C = undefined;
1002 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcb));
1002 pc = @alignCast(@fieldParentPtr("b", pcb));
10031003 try expect(pc == &c);
10041004 }
10051005 }
......@@ -1018,14 +1018,14 @@ test "@fieldParentPtr packed struct first zero-bit field" {
10181018 {
10191019 const c: C = .{ .a = 0 };
10201020 const pcf = &c.a;
1021 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1021 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
10221022 try expect(pc == &c);
10231023 }
10241024 {
10251025 const c: C = .{ .a = 0 };
10261026 const pcf = &c.a;
10271027 var pc: *const C = undefined;
1028 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1028 pc = @alignCast(@fieldParentPtr("a", pcf));
10291029 try expect(pc == &c);
10301030 }
10311031 {
......@@ -1033,7 +1033,7 @@ test "@fieldParentPtr packed struct first zero-bit field" {
10331033 var pcf: @TypeOf(&c.a) = undefined;
10341034 pcf = &c.a;
10351035 var pc: *const C = undefined;
1036 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1036 pc = @alignCast(@fieldParentPtr("a", pcf));
10371037 try expect(pc == &c);
10381038 }
10391039 {
......@@ -1042,21 +1042,21 @@ test "@fieldParentPtr packed struct first zero-bit field" {
10421042 var pcf: @TypeOf(&c.a) = undefined;
10431043 pcf = &c.a;
10441044 var pc: *C = undefined;
1045 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
1045 pc = @alignCast(@fieldParentPtr("a", pcf));
10461046 try expect(pc == &c);
10471047 }
10481048
10491049 {
10501050 const c: C = .{ .b = 666.667 };
10511051 const pcf = &c.b;
1052 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1052 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
10531053 try expect(pc == &c);
10541054 }
10551055 {
10561056 const c: C = .{ .b = 666.667 };
10571057 const pcf = &c.b;
10581058 var pc: *const C = undefined;
1059 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1059 pc = @alignCast(@fieldParentPtr("b", pcf));
10601060 try expect(pc == &c);
10611061 }
10621062 {
......@@ -1064,7 +1064,7 @@ test "@fieldParentPtr packed struct first zero-bit field" {
10641064 var pcf: @TypeOf(&c.b) = undefined;
10651065 pcf = &c.b;
10661066 var pc: *const C = undefined;
1067 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1067 pc = @alignCast(@fieldParentPtr("b", pcf));
10681068 try expect(pc == &c);
10691069 }
10701070 {
......@@ -1073,21 +1073,21 @@ test "@fieldParentPtr packed struct first zero-bit field" {
10731073 var pcf: @TypeOf(&c.b) = undefined;
10741074 pcf = &c.b;
10751075 var pc: *C = undefined;
1076 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
1076 pc = @alignCast(@fieldParentPtr("b", pcf));
10771077 try expect(pc == &c);
10781078 }
10791079
10801080 {
10811081 const c: C = .{ .c = -1111111111 };
10821082 const pcf = &c.c;
1083 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1083 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
10841084 try expect(pc == &c);
10851085 }
10861086 {
10871087 const c: C = .{ .c = -1111111111 };
10881088 const pcf = &c.c;
10891089 var pc: *const C = undefined;
1090 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1090 pc = @alignCast(@fieldParentPtr("c", pcf));
10911091 try expect(pc == &c);
10921092 }
10931093 {
......@@ -1095,7 +1095,7 @@ test "@fieldParentPtr packed struct first zero-bit field" {
10951095 var pcf: @TypeOf(&c.c) = undefined;
10961096 pcf = &c.c;
10971097 var pc: *const C = undefined;
1098 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1098 pc = @alignCast(@fieldParentPtr("c", pcf));
10991099 try expect(pc == &c);
11001100 }
11011101 {
......@@ -1104,7 +1104,7 @@ test "@fieldParentPtr packed struct first zero-bit field" {
11041104 var pcf: @TypeOf(&c.c) = undefined;
11051105 pcf = &c.c;
11061106 var pc: *C = undefined;
1107 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
1107 pc = @alignCast(@fieldParentPtr("c", pcf));
11081108 try expect(pc == &c);
11091109 }
11101110}
......@@ -1122,14 +1122,14 @@ test "@fieldParentPtr packed struct middle zero-bit field" {
11221122 {
11231123 const c: C = .{ .a = 666.667 };
11241124 const pcf = &c.a;
1125 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1125 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
11261126 try expect(pc == &c);
11271127 }
11281128 {
11291129 const c: C = .{ .a = 666.667 };
11301130 const pcf = &c.a;
11311131 var pc: *const C = undefined;
1132 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1132 pc = @alignCast(@fieldParentPtr("a", pcf));
11331133 try expect(pc == &c);
11341134 }
11351135 {
......@@ -1137,7 +1137,7 @@ test "@fieldParentPtr packed struct middle zero-bit field" {
11371137 var pcf: @TypeOf(&c.a) = undefined;
11381138 pcf = &c.a;
11391139 var pc: *const C = undefined;
1140 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1140 pc = @alignCast(@fieldParentPtr("a", pcf));
11411141 try expect(pc == &c);
11421142 }
11431143 {
......@@ -1146,21 +1146,21 @@ test "@fieldParentPtr packed struct middle zero-bit field" {
11461146 var pcf: @TypeOf(&c.a) = undefined;
11471147 pcf = &c.a;
11481148 var pc: *C = undefined;
1149 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
1149 pc = @alignCast(@fieldParentPtr("a", pcf));
11501150 try expect(pc == &c);
11511151 }
11521152
11531153 {
11541154 const c: C = .{ .b = 0 };
11551155 const pcf = &c.b;
1156 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1156 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
11571157 try expect(pc == &c);
11581158 }
11591159 {
11601160 const c: C = .{ .b = 0 };
11611161 const pcf = &c.b;
11621162 var pc: *const C = undefined;
1163 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1163 pc = @alignCast(@fieldParentPtr("b", pcf));
11641164 try expect(pc == &c);
11651165 }
11661166 {
......@@ -1168,7 +1168,7 @@ test "@fieldParentPtr packed struct middle zero-bit field" {
11681168 var pcf: @TypeOf(&c.b) = undefined;
11691169 pcf = &c.b;
11701170 var pc: *const C = undefined;
1171 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1171 pc = @alignCast(@fieldParentPtr("b", pcf));
11721172 try expect(pc == &c);
11731173 }
11741174 {
......@@ -1177,21 +1177,21 @@ test "@fieldParentPtr packed struct middle zero-bit field" {
11771177 var pcf: @TypeOf(&c.b) = undefined;
11781178 pcf = &c.b;
11791179 var pc: *C = undefined;
1180 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
1180 pc = @alignCast(@fieldParentPtr("b", pcf));
11811181 try expect(pc == &c);
11821182 }
11831183
11841184 {
11851185 const c: C = .{ .c = -1111111111 };
11861186 const pcf = &c.c;
1187 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1187 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
11881188 try expect(pc == &c);
11891189 }
11901190 {
11911191 const c: C = .{ .c = -1111111111 };
11921192 const pcf = &c.c;
11931193 var pc: *const C = undefined;
1194 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1194 pc = @alignCast(@fieldParentPtr("c", pcf));
11951195 try expect(pc == &c);
11961196 }
11971197 {
......@@ -1199,7 +1199,7 @@ test "@fieldParentPtr packed struct middle zero-bit field" {
11991199 var pcf: @TypeOf(&c.c) = undefined;
12001200 pcf = &c.c;
12011201 var pc: *const C = undefined;
1202 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1202 pc = @alignCast(@fieldParentPtr("c", pcf));
12031203 try expect(pc == &c);
12041204 }
12051205 {
......@@ -1208,7 +1208,7 @@ test "@fieldParentPtr packed struct middle zero-bit field" {
12081208 var pcf: @TypeOf(&c.c) = undefined;
12091209 pcf = &c.c;
12101210 var pc: *C = undefined;
1211 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
1211 pc = @alignCast(@fieldParentPtr("c", pcf));
12121212 try expect(pc == &c);
12131213 }
12141214}
......@@ -1226,14 +1226,14 @@ test "@fieldParentPtr packed struct last zero-bit field" {
12261226 {
12271227 const c: C = .{ .a = 666.667 };
12281228 const pcf = &c.a;
1229 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1229 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
12301230 try expect(pc == &c);
12311231 }
12321232 {
12331233 const c: C = .{ .a = 666.667 };
12341234 const pcf = &c.a;
12351235 var pc: *const C = undefined;
1236 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1236 pc = @alignCast(@fieldParentPtr("a", pcf));
12371237 try expect(pc == &c);
12381238 }
12391239 {
......@@ -1241,7 +1241,7 @@ test "@fieldParentPtr packed struct last zero-bit field" {
12411241 var pcf: @TypeOf(&c.a) = undefined;
12421242 pcf = &c.a;
12431243 var pc: *const C = undefined;
1244 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1244 pc = @alignCast(@fieldParentPtr("a", pcf));
12451245 try expect(pc == &c);
12461246 }
12471247 {
......@@ -1250,21 +1250,21 @@ test "@fieldParentPtr packed struct last zero-bit field" {
12501250 var pcf: @TypeOf(&c.a) = undefined;
12511251 pcf = &c.a;
12521252 var pc: *C = undefined;
1253 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
1253 pc = @alignCast(@fieldParentPtr("a", pcf));
12541254 try expect(pc == &c);
12551255 }
12561256
12571257 {
12581258 const c: C = .{ .b = -1111111111 };
12591259 const pcf = &c.b;
1260 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1260 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
12611261 try expect(pc == &c);
12621262 }
12631263 {
12641264 const c: C = .{ .b = -1111111111 };
12651265 const pcf = &c.b;
12661266 var pc: *const C = undefined;
1267 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1267 pc = @alignCast(@fieldParentPtr("b", pcf));
12681268 try expect(pc == &c);
12691269 }
12701270 {
......@@ -1272,7 +1272,7 @@ test "@fieldParentPtr packed struct last zero-bit field" {
12721272 var pcf: @TypeOf(&c.b) = undefined;
12731273 pcf = &c.b;
12741274 var pc: *const C = undefined;
1275 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1275 pc = @alignCast(@fieldParentPtr("b", pcf));
12761276 try expect(pc == &c);
12771277 }
12781278 {
......@@ -1281,21 +1281,21 @@ test "@fieldParentPtr packed struct last zero-bit field" {
12811281 var pcf: @TypeOf(&c.b) = undefined;
12821282 pcf = &c.b;
12831283 var pc: *C = undefined;
1284 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
1284 pc = @alignCast(@fieldParentPtr("b", pcf));
12851285 try expect(pc == &c);
12861286 }
12871287
12881288 {
12891289 const c: C = .{ .c = 0 };
12901290 const pcf = &c.c;
1291 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1291 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
12921292 try expect(pc == &c);
12931293 }
12941294 {
12951295 const c: C = .{ .c = 0 };
12961296 const pcf = &c.c;
12971297 var pc: *const C = undefined;
1298 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1298 pc = @alignCast(@fieldParentPtr("c", pcf));
12991299 try expect(pc == &c);
13001300 }
13011301 {
......@@ -1303,7 +1303,7 @@ test "@fieldParentPtr packed struct last zero-bit field" {
13031303 var pcf: @TypeOf(&c.c) = undefined;
13041304 pcf = &c.c;
13051305 var pc: *const C = undefined;
1306 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1306 pc = @alignCast(@fieldParentPtr("c", pcf));
13071307 try expect(pc == &c);
13081308 }
13091309 {
......@@ -1312,7 +1312,7 @@ test "@fieldParentPtr packed struct last zero-bit field" {
13121312 var pcf: @TypeOf(&c.c) = undefined;
13131313 pcf = &c.c;
13141314 var pc: *C = undefined;
1315 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
1315 pc = @alignCast(@fieldParentPtr("c", pcf));
13161316 try expect(pc == &c);
13171317 }
13181318}
......@@ -1328,14 +1328,14 @@ test "@fieldParentPtr tagged union" {
13281328 {
13291329 const c: C = .{ .a = false };
13301330 const pcf = &c.a;
1331 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1331 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
13321332 try expect(pc == &c);
13331333 }
13341334 {
13351335 const c: C = .{ .a = false };
13361336 const pcf = &c.a;
13371337 var pc: *const C = undefined;
1338 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1338 pc = @alignCast(@fieldParentPtr("a", pcf));
13391339 try expect(pc == &c);
13401340 }
13411341 {
......@@ -1343,7 +1343,7 @@ test "@fieldParentPtr tagged union" {
13431343 var pcf: @TypeOf(&c.a) = undefined;
13441344 pcf = &c.a;
13451345 var pc: *const C = undefined;
1346 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1346 pc = @alignCast(@fieldParentPtr("a", pcf));
13471347 try expect(pc == &c);
13481348 }
13491349 {
......@@ -1352,21 +1352,21 @@ test "@fieldParentPtr tagged union" {
13521352 var pcf: @TypeOf(&c.a) = undefined;
13531353 pcf = &c.a;
13541354 var pc: *C = undefined;
1355 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
1355 pc = @alignCast(@fieldParentPtr("a", pcf));
13561356 try expect(pc == &c);
13571357 }
13581358
13591359 {
13601360 const c: C = .{ .b = 0 };
13611361 const pcf = &c.b;
1362 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1362 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
13631363 try expect(pc == &c);
13641364 }
13651365 {
13661366 const c: C = .{ .b = 0 };
13671367 const pcf = &c.b;
13681368 var pc: *const C = undefined;
1369 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1369 pc = @alignCast(@fieldParentPtr("b", pcf));
13701370 try expect(pc == &c);
13711371 }
13721372 {
......@@ -1374,7 +1374,7 @@ test "@fieldParentPtr tagged union" {
13741374 var pcf: @TypeOf(&c.b) = undefined;
13751375 pcf = &c.b;
13761376 var pc: *const C = undefined;
1377 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1377 pc = @alignCast(@fieldParentPtr("b", pcf));
13781378 try expect(pc == &c);
13791379 }
13801380 {
......@@ -1383,21 +1383,21 @@ test "@fieldParentPtr tagged union" {
13831383 var pcf: @TypeOf(&c.b) = undefined;
13841384 pcf = &c.b;
13851385 var pc: *C = undefined;
1386 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
1386 pc = @alignCast(@fieldParentPtr("b", pcf));
13871387 try expect(pc == &c);
13881388 }
13891389
13901390 {
13911391 const c: C = .{ .c = .{255} };
13921392 const pcf = &c.c;
1393 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1393 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
13941394 try expect(pc == &c);
13951395 }
13961396 {
13971397 const c: C = .{ .c = .{255} };
13981398 const pcf = &c.c;
13991399 var pc: *const C = undefined;
1400 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1400 pc = @alignCast(@fieldParentPtr("c", pcf));
14011401 try expect(pc == &c);
14021402 }
14031403 {
......@@ -1405,7 +1405,7 @@ test "@fieldParentPtr tagged union" {
14051405 var pcf: @TypeOf(&c.c) = undefined;
14061406 pcf = &c.c;
14071407 var pc: *const C = undefined;
1408 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1408 pc = @alignCast(@fieldParentPtr("c", pcf));
14091409 try expect(pc == &c);
14101410 }
14111411 {
......@@ -1414,21 +1414,21 @@ test "@fieldParentPtr tagged union" {
14141414 var pcf: @TypeOf(&c.c) = undefined;
14151415 pcf = &c.c;
14161416 var pc: *C = undefined;
1417 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
1417 pc = @alignCast(@fieldParentPtr("c", pcf));
14181418 try expect(pc == &c);
14191419 }
14201420
14211421 {
14221422 const c: C = .{ .d = -1111111111 };
14231423 const pcf = &c.d;
1424 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
1424 const pc: *const C = @alignCast(@fieldParentPtr("d", pcf));
14251425 try expect(pc == &c);
14261426 }
14271427 {
14281428 const c: C = .{ .d = -1111111111 };
14291429 const pcf = &c.d;
14301430 var pc: *const C = undefined;
1431 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
1431 pc = @alignCast(@fieldParentPtr("d", pcf));
14321432 try expect(pc == &c);
14331433 }
14341434 {
......@@ -1436,7 +1436,7 @@ test "@fieldParentPtr tagged union" {
14361436 var pcf: @TypeOf(&c.d) = undefined;
14371437 pcf = &c.d;
14381438 var pc: *const C = undefined;
1439 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
1439 pc = @alignCast(@fieldParentPtr("d", pcf));
14401440 try expect(pc == &c);
14411441 }
14421442 {
......@@ -1445,7 +1445,7 @@ test "@fieldParentPtr tagged union" {
14451445 var pcf: @TypeOf(&c.d) = undefined;
14461446 pcf = &c.d;
14471447 var pc: *C = undefined;
1448 pc = @alignCast(@fieldParentPtr(*align(1) C, "d", pcf));
1448 pc = @alignCast(@fieldParentPtr("d", pcf));
14491449 try expect(pc == &c);
14501450 }
14511451}
......@@ -1461,14 +1461,14 @@ test "@fieldParentPtr untagged union" {
14611461 {
14621462 const c: C = .{ .a = false };
14631463 const pcf = &c.a;
1464 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1464 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
14651465 try expect(pc == &c);
14661466 }
14671467 {
14681468 const c: C = .{ .a = false };
14691469 const pcf = &c.a;
14701470 var pc: *const C = undefined;
1471 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1471 pc = @alignCast(@fieldParentPtr("a", pcf));
14721472 try expect(pc == &c);
14731473 }
14741474 {
......@@ -1476,7 +1476,7 @@ test "@fieldParentPtr untagged union" {
14761476 var pcf: @TypeOf(&c.a) = undefined;
14771477 pcf = &c.a;
14781478 var pc: *const C = undefined;
1479 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1479 pc = @alignCast(@fieldParentPtr("a", pcf));
14801480 try expect(pc == &c);
14811481 }
14821482 {
......@@ -1485,21 +1485,21 @@ test "@fieldParentPtr untagged union" {
14851485 var pcf: @TypeOf(&c.a) = undefined;
14861486 pcf = &c.a;
14871487 var pc: *C = undefined;
1488 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
1488 pc = @alignCast(@fieldParentPtr("a", pcf));
14891489 try expect(pc == &c);
14901490 }
14911491
14921492 {
14931493 const c: C = .{ .b = 0 };
14941494 const pcf = &c.b;
1495 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1495 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
14961496 try expect(pc == &c);
14971497 }
14981498 {
14991499 const c: C = .{ .b = 0 };
15001500 const pcf = &c.b;
15011501 var pc: *const C = undefined;
1502 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1502 pc = @alignCast(@fieldParentPtr("b", pcf));
15031503 try expect(pc == &c);
15041504 }
15051505 {
......@@ -1507,7 +1507,7 @@ test "@fieldParentPtr untagged union" {
15071507 var pcf: @TypeOf(&c.b) = undefined;
15081508 pcf = &c.b;
15091509 var pc: *const C = undefined;
1510 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1510 pc = @alignCast(@fieldParentPtr("b", pcf));
15111511 try expect(pc == &c);
15121512 }
15131513 {
......@@ -1516,21 +1516,21 @@ test "@fieldParentPtr untagged union" {
15161516 var pcf: @TypeOf(&c.b) = undefined;
15171517 pcf = &c.b;
15181518 var pc: *C = undefined;
1519 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
1519 pc = @alignCast(@fieldParentPtr("b", pcf));
15201520 try expect(pc == &c);
15211521 }
15221522
15231523 {
15241524 const c: C = .{ .c = .{255} };
15251525 const pcf = &c.c;
1526 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1526 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
15271527 try expect(pc == &c);
15281528 }
15291529 {
15301530 const c: C = .{ .c = .{255} };
15311531 const pcf = &c.c;
15321532 var pc: *const C = undefined;
1533 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1533 pc = @alignCast(@fieldParentPtr("c", pcf));
15341534 try expect(pc == &c);
15351535 }
15361536 {
......@@ -1538,7 +1538,7 @@ test "@fieldParentPtr untagged union" {
15381538 var pcf: @TypeOf(&c.c) = undefined;
15391539 pcf = &c.c;
15401540 var pc: *const C = undefined;
1541 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1541 pc = @alignCast(@fieldParentPtr("c", pcf));
15421542 try expect(pc == &c);
15431543 }
15441544 {
......@@ -1547,21 +1547,21 @@ test "@fieldParentPtr untagged union" {
15471547 var pcf: @TypeOf(&c.c) = undefined;
15481548 pcf = &c.c;
15491549 var pc: *C = undefined;
1550 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
1550 pc = @alignCast(@fieldParentPtr("c", pcf));
15511551 try expect(pc == &c);
15521552 }
15531553
15541554 {
15551555 const c: C = .{ .d = -1111111111 };
15561556 const pcf = &c.d;
1557 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
1557 const pc: *const C = @alignCast(@fieldParentPtr("d", pcf));
15581558 try expect(pc == &c);
15591559 }
15601560 {
15611561 const c: C = .{ .d = -1111111111 };
15621562 const pcf = &c.d;
15631563 var pc: *const C = undefined;
1564 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
1564 pc = @alignCast(@fieldParentPtr("d", pcf));
15651565 try expect(pc == &c);
15661566 }
15671567 {
......@@ -1569,7 +1569,7 @@ test "@fieldParentPtr untagged union" {
15691569 var pcf: @TypeOf(&c.d) = undefined;
15701570 pcf = &c.d;
15711571 var pc: *const C = undefined;
1572 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
1572 pc = @alignCast(@fieldParentPtr("d", pcf));
15731573 try expect(pc == &c);
15741574 }
15751575 {
......@@ -1578,7 +1578,7 @@ test "@fieldParentPtr untagged union" {
15781578 var pcf: @TypeOf(&c.d) = undefined;
15791579 pcf = &c.d;
15801580 var pc: *C = undefined;
1581 pc = @alignCast(@fieldParentPtr(*align(1) C, "d", pcf));
1581 pc = @alignCast(@fieldParentPtr("d", pcf));
15821582 try expect(pc == &c);
15831583 }
15841584}
......@@ -1594,14 +1594,14 @@ test "@fieldParentPtr extern union" {
15941594 {
15951595 const c: C = .{ .a = false };
15961596 const pcf = &c.a;
1597 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1597 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
15981598 try expect(pc == &c);
15991599 }
16001600 {
16011601 const c: C = .{ .a = false };
16021602 const pcf = &c.a;
16031603 var pc: *const C = undefined;
1604 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1604 pc = @alignCast(@fieldParentPtr("a", pcf));
16051605 try expect(pc == &c);
16061606 }
16071607 {
......@@ -1609,7 +1609,7 @@ test "@fieldParentPtr extern union" {
16091609 var pcf: @TypeOf(&c.a) = undefined;
16101610 pcf = &c.a;
16111611 var pc: *const C = undefined;
1612 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1612 pc = @alignCast(@fieldParentPtr("a", pcf));
16131613 try expect(pc == &c);
16141614 }
16151615 {
......@@ -1618,21 +1618,21 @@ test "@fieldParentPtr extern union" {
16181618 var pcf: @TypeOf(&c.a) = undefined;
16191619 pcf = &c.a;
16201620 var pc: *C = undefined;
1621 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
1621 pc = @alignCast(@fieldParentPtr("a", pcf));
16221622 try expect(pc == &c);
16231623 }
16241624
16251625 {
16261626 const c: C = .{ .b = 0 };
16271627 const pcf = &c.b;
1628 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1628 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
16291629 try expect(pc == &c);
16301630 }
16311631 {
16321632 const c: C = .{ .b = 0 };
16331633 const pcf = &c.b;
16341634 var pc: *const C = undefined;
1635 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1635 pc = @alignCast(@fieldParentPtr("b", pcf));
16361636 try expect(pc == &c);
16371637 }
16381638 {
......@@ -1640,7 +1640,7 @@ test "@fieldParentPtr extern union" {
16401640 var pcf: @TypeOf(&c.b) = undefined;
16411641 pcf = &c.b;
16421642 var pc: *const C = undefined;
1643 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1643 pc = @alignCast(@fieldParentPtr("b", pcf));
16441644 try expect(pc == &c);
16451645 }
16461646 {
......@@ -1649,21 +1649,21 @@ test "@fieldParentPtr extern union" {
16491649 var pcf: @TypeOf(&c.b) = undefined;
16501650 pcf = &c.b;
16511651 var pc: *C = undefined;
1652 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
1652 pc = @alignCast(@fieldParentPtr("b", pcf));
16531653 try expect(pc == &c);
16541654 }
16551655
16561656 {
16571657 const c: C = .{ .c = .{ .x = 255 } };
16581658 const pcf = &c.c;
1659 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1659 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
16601660 try expect(pc == &c);
16611661 }
16621662 {
16631663 const c: C = .{ .c = .{ .x = 255 } };
16641664 const pcf = &c.c;
16651665 var pc: *const C = undefined;
1666 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1666 pc = @alignCast(@fieldParentPtr("c", pcf));
16671667 try expect(pc == &c);
16681668 }
16691669 {
......@@ -1671,7 +1671,7 @@ test "@fieldParentPtr extern union" {
16711671 var pcf: @TypeOf(&c.c) = undefined;
16721672 pcf = &c.c;
16731673 var pc: *const C = undefined;
1674 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1674 pc = @alignCast(@fieldParentPtr("c", pcf));
16751675 try expect(pc == &c);
16761676 }
16771677 {
......@@ -1680,21 +1680,21 @@ test "@fieldParentPtr extern union" {
16801680 var pcf: @TypeOf(&c.c) = undefined;
16811681 pcf = &c.c;
16821682 var pc: *C = undefined;
1683 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
1683 pc = @alignCast(@fieldParentPtr("c", pcf));
16841684 try expect(pc == &c);
16851685 }
16861686
16871687 {
16881688 const c: C = .{ .d = -1111111111 };
16891689 const pcf = &c.d;
1690 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
1690 const pc: *const C = @alignCast(@fieldParentPtr("d", pcf));
16911691 try expect(pc == &c);
16921692 }
16931693 {
16941694 const c: C = .{ .d = -1111111111 };
16951695 const pcf = &c.d;
16961696 var pc: *const C = undefined;
1697 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
1697 pc = @alignCast(@fieldParentPtr("d", pcf));
16981698 try expect(pc == &c);
16991699 }
17001700 {
......@@ -1702,7 +1702,7 @@ test "@fieldParentPtr extern union" {
17021702 var pcf: @TypeOf(&c.d) = undefined;
17031703 pcf = &c.d;
17041704 var pc: *const C = undefined;
1705 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
1705 pc = @alignCast(@fieldParentPtr("d", pcf));
17061706 try expect(pc == &c);
17071707 }
17081708 {
......@@ -1711,7 +1711,7 @@ test "@fieldParentPtr extern union" {
17111711 var pcf: @TypeOf(&c.d) = undefined;
17121712 pcf = &c.d;
17131713 var pc: *C = undefined;
1714 pc = @alignCast(@fieldParentPtr(*align(1) C, "d", pcf));
1714 pc = @alignCast(@fieldParentPtr("d", pcf));
17151715 try expect(pc == &c);
17161716 }
17171717}
......@@ -1729,14 +1729,14 @@ test "@fieldParentPtr packed union" {
17291729 {
17301730 const c: C = .{ .a = false };
17311731 const pcf = &c.a;
1732 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1732 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
17331733 try expect(pc == &c);
17341734 }
17351735 {
17361736 const c: C = .{ .a = false };
17371737 const pcf = &c.a;
17381738 var pc: *const C = undefined;
1739 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1739 pc = @alignCast(@fieldParentPtr("a", pcf));
17401740 try expect(pc == &c);
17411741 }
17421742 {
......@@ -1744,7 +1744,7 @@ test "@fieldParentPtr packed union" {
17441744 var pcf: @TypeOf(&c.a) = undefined;
17451745 pcf = &c.a;
17461746 var pc: *const C = undefined;
1747 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1747 pc = @alignCast(@fieldParentPtr("a", pcf));
17481748 try expect(pc == &c);
17491749 }
17501750 {
......@@ -1753,21 +1753,21 @@ test "@fieldParentPtr packed union" {
17531753 var pcf: @TypeOf(&c.a) = undefined;
17541754 pcf = &c.a;
17551755 var pc: *C = undefined;
1756 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
1756 pc = @alignCast(@fieldParentPtr("a", pcf));
17571757 try expect(pc == &c);
17581758 }
17591759
17601760 {
17611761 const c: C = .{ .b = 0 };
17621762 const pcf = &c.b;
1763 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1763 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
17641764 try expect(pc == &c);
17651765 }
17661766 {
17671767 const c: C = .{ .b = 0 };
17681768 const pcf = &c.b;
17691769 var pc: *const C = undefined;
1770 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1770 pc = @alignCast(@fieldParentPtr("b", pcf));
17711771 try expect(pc == &c);
17721772 }
17731773 {
......@@ -1775,7 +1775,7 @@ test "@fieldParentPtr packed union" {
17751775 var pcf: @TypeOf(&c.b) = undefined;
17761776 pcf = &c.b;
17771777 var pc: *const C = undefined;
1778 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1778 pc = @alignCast(@fieldParentPtr("b", pcf));
17791779 try expect(pc == &c);
17801780 }
17811781 {
......@@ -1784,21 +1784,21 @@ test "@fieldParentPtr packed union" {
17841784 var pcf: @TypeOf(&c.b) = undefined;
17851785 pcf = &c.b;
17861786 var pc: *C = undefined;
1787 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
1787 pc = @alignCast(@fieldParentPtr("b", pcf));
17881788 try expect(pc == &c);
17891789 }
17901790
17911791 {
17921792 const c: C = .{ .c = .{ .x = 255 } };
17931793 const pcf = &c.c;
1794 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1794 const pc: *const C = @alignCast(@fieldParentPtr("c", pcf));
17951795 try expect(pc == &c);
17961796 }
17971797 {
17981798 const c: C = .{ .c = .{ .x = 255 } };
17991799 const pcf = &c.c;
18001800 var pc: *const C = undefined;
1801 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1801 pc = @alignCast(@fieldParentPtr("c", pcf));
18021802 try expect(pc == &c);
18031803 }
18041804 {
......@@ -1806,7 +1806,7 @@ test "@fieldParentPtr packed union" {
18061806 var pcf: @TypeOf(&c.c) = undefined;
18071807 pcf = &c.c;
18081808 var pc: *const C = undefined;
1809 pc = @alignCast(@fieldParentPtr(*align(1) const C, "c", pcf));
1809 pc = @alignCast(@fieldParentPtr("c", pcf));
18101810 try expect(pc == &c);
18111811 }
18121812 {
......@@ -1815,21 +1815,21 @@ test "@fieldParentPtr packed union" {
18151815 var pcf: @TypeOf(&c.c) = undefined;
18161816 pcf = &c.c;
18171817 var pc: *C = undefined;
1818 pc = @alignCast(@fieldParentPtr(*align(1) C, "c", pcf));
1818 pc = @alignCast(@fieldParentPtr("c", pcf));
18191819 try expect(pc == &c);
18201820 }
18211821
18221822 {
18231823 const c: C = .{ .d = -1111111111 };
18241824 const pcf = &c.d;
1825 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
1825 const pc: *const C = @alignCast(@fieldParentPtr("d", pcf));
18261826 try expect(pc == &c);
18271827 }
18281828 {
18291829 const c: C = .{ .d = -1111111111 };
18301830 const pcf = &c.d;
18311831 var pc: *const C = undefined;
1832 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
1832 pc = @alignCast(@fieldParentPtr("d", pcf));
18331833 try expect(pc == &c);
18341834 }
18351835 {
......@@ -1837,7 +1837,7 @@ test "@fieldParentPtr packed union" {
18371837 var pcf: @TypeOf(&c.d) = undefined;
18381838 pcf = &c.d;
18391839 var pc: *const C = undefined;
1840 pc = @alignCast(@fieldParentPtr(*align(1) const C, "d", pcf));
1840 pc = @alignCast(@fieldParentPtr("d", pcf));
18411841 try expect(pc == &c);
18421842 }
18431843 {
......@@ -1846,7 +1846,7 @@ test "@fieldParentPtr packed union" {
18461846 var pcf: @TypeOf(&c.d) = undefined;
18471847 pcf = &c.d;
18481848 var pc: *C = undefined;
1849 pc = @alignCast(@fieldParentPtr(*align(1) C, "d", pcf));
1849 pc = @alignCast(@fieldParentPtr("d", pcf));
18501850 try expect(pc == &c);
18511851 }
18521852}
......@@ -1863,14 +1863,14 @@ test "@fieldParentPtr tagged union all zero-bit fields" {
18631863 {
18641864 const c: C = .{ .a = 0 };
18651865 const pcf = &c.a;
1866 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1866 const pc: *const C = @alignCast(@fieldParentPtr("a", pcf));
18671867 try expect(pc == &c);
18681868 }
18691869 {
18701870 const c: C = .{ .a = 0 };
18711871 const pcf = &c.a;
18721872 var pc: *const C = undefined;
1873 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1873 pc = @alignCast(@fieldParentPtr("a", pcf));
18741874 try expect(pc == &c);
18751875 }
18761876 {
......@@ -1878,7 +1878,7 @@ test "@fieldParentPtr tagged union all zero-bit fields" {
18781878 var pcf: @TypeOf(&c.a) = undefined;
18791879 pcf = &c.a;
18801880 var pc: *const C = undefined;
1881 pc = @alignCast(@fieldParentPtr(*align(1) const C, "a", pcf));
1881 pc = @alignCast(@fieldParentPtr("a", pcf));
18821882 try expect(pc == &c);
18831883 }
18841884 {
......@@ -1887,21 +1887,21 @@ test "@fieldParentPtr tagged union all zero-bit fields" {
18871887 var pcf: @TypeOf(&c.a) = undefined;
18881888 pcf = &c.a;
18891889 var pc: *C = undefined;
1890 pc = @alignCast(@fieldParentPtr(*align(1) C, "a", pcf));
1890 pc = @alignCast(@fieldParentPtr("a", pcf));
18911891 try expect(pc == &c);
18921892 }
18931893
18941894 {
18951895 const c: C = .{ .b = 0 };
18961896 const pcf = &c.b;
1897 const pc: *const C = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1897 const pc: *const C = @alignCast(@fieldParentPtr("b", pcf));
18981898 try expect(pc == &c);
18991899 }
19001900 {
19011901 const c: C = .{ .b = 0 };
19021902 const pcf = &c.b;
19031903 var pc: *const C = undefined;
1904 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1904 pc = @alignCast(@fieldParentPtr("b", pcf));
19051905 try expect(pc == &c);
19061906 }
19071907 {
......@@ -1909,7 +1909,7 @@ test "@fieldParentPtr tagged union all zero-bit fields" {
19091909 var pcf: @TypeOf(&c.b) = undefined;
19101910 pcf = &c.b;
19111911 var pc: *const C = undefined;
1912 pc = @alignCast(@fieldParentPtr(*align(1) const C, "b", pcf));
1912 pc = @alignCast(@fieldParentPtr("b", pcf));
19131913 try expect(pc == &c);
19141914 }
19151915 {
......@@ -1918,7 +1918,7 @@ test "@fieldParentPtr tagged union all zero-bit fields" {
19181918 var pcf: @TypeOf(&c.b) = undefined;
19191919 pcf = &c.b;
19201920 var pc: *C = undefined;
1921 pc = @alignCast(@fieldParentPtr(*align(1) C, "b", pcf));
1921 pc = @alignCast(@fieldParentPtr("b", pcf));
19221922 try expect(pc == &c);
19231923 }
19241924}
test/behavior/struct.zig+6-6
......@@ -1392,13 +1392,13 @@ test "fieldParentPtr of a zero-bit field" {
13921392 {
13931393 const a = A{ .u = 0 };
13941394 const b_ptr = &a.b;
1395 const a_ptr = @fieldParentPtr(*const A, "b", b_ptr);
1395 const a_ptr: *const A = @fieldParentPtr("b", b_ptr);
13961396 try std.testing.expectEqual(&a, a_ptr);
13971397 }
13981398 {
13991399 var a = A{ .u = 0 };
14001400 const b_ptr = &a.b;
1401 const a_ptr = @fieldParentPtr(*const A, "b", b_ptr);
1401 const a_ptr: *A = @fieldParentPtr("b", b_ptr);
14021402 try std.testing.expectEqual(&a, a_ptr);
14031403 }
14041404 }
......@@ -1406,17 +1406,17 @@ test "fieldParentPtr of a zero-bit field" {
14061406 {
14071407 const a = A{ .u = 0 };
14081408 const c_ptr = &a.b.c;
1409 const b_ptr = @fieldParentPtr(*const @TypeOf(a.b), "c", c_ptr);
1409 const b_ptr: @TypeOf(&a.b) = @fieldParentPtr("c", c_ptr);
14101410 try std.testing.expectEqual(&a.b, b_ptr);
1411 const a_ptr = @fieldParentPtr(*const A, "b", b_ptr);
1411 const a_ptr: *const A = @fieldParentPtr("b", b_ptr);
14121412 try std.testing.expectEqual(&a, a_ptr);
14131413 }
14141414 {
14151415 var a = A{ .u = 0 };
14161416 const c_ptr = &a.b.c;
1417 const b_ptr = @fieldParentPtr(*const @TypeOf(a.b), "c", c_ptr);
1417 const b_ptr: @TypeOf(&a.b) = @fieldParentPtr("c", c_ptr);
14181418 try std.testing.expectEqual(&a.b, b_ptr);
1419 const a_ptr = @fieldParentPtr(*const A, "b", b_ptr);
1419 const a_ptr: *const A = @fieldParentPtr("b", b_ptr);
14201420 try std.testing.expectEqual(&a, a_ptr);
14211421 }
14221422 }
test/behavior/tuple.zig+2-2
......@@ -222,7 +222,7 @@ test "fieldParentPtr of tuple" {
222222 var x: u32 = 0;
223223 _ = &x;
224224 const tuple = .{ x, x };
225 try testing.expect(&tuple == @fieldParentPtr(*const @TypeOf(tuple), "1", &tuple[1]));
225 try testing.expect(&tuple == @as(@TypeOf(&tuple), @fieldParentPtr("1", &tuple[1])));
226226}
227227
228228test "fieldParentPtr of anon struct" {
......@@ -233,7 +233,7 @@ test "fieldParentPtr of anon struct" {
233233 var x: u32 = 0;
234234 _ = &x;
235235 const anon_st = .{ .foo = x, .bar = x };
236 try testing.expect(&anon_st == @fieldParentPtr(*const @TypeOf(anon_st), "bar", &anon_st.bar));
236 try testing.expect(&anon_st == @as(@TypeOf(&anon_st), @fieldParentPtr("bar", &anon_st.bar)));
237237}
238238
239239test "offsetOf tuple" {
test/cases/compile_errors/fieldParentPtr-bad_field_name.zig+2-2
......@@ -2,12 +2,12 @@ const Foo = extern struct {
22 derp: i32,
33};
44export fn foo(a: *i32) *Foo {
5 return @fieldParentPtr(*Foo, "a", a);
5 return @fieldParentPtr("a", a);
66}
77
88// error
99// backend=stage2
1010// target=native
1111//
12// :5:34: error: no field named 'a' in struct 'tmp.Foo'
12// :5:28: error: no field named 'a' in struct 'tmp.Foo'
1313// :1:20: note: struct declared here
test/cases/compile_errors/fieldParentPtr-comptime_field_ptr_not_based_on_struct.zig+1-1
......@@ -9,7 +9,7 @@ const foo = Foo{
99
1010comptime {
1111 const field_ptr: *i32 = @ptrFromInt(0x1234);
12 const another_foo_ptr = @fieldParentPtr(*const Foo, "b", field_ptr);
12 const another_foo_ptr: *const Foo = @fieldParentPtr("b", field_ptr);
1313 _ = another_foo_ptr;
1414}
1515
test/cases/compile_errors/fieldParentPtr-comptime_wrong_field_index.zig+2-2
......@@ -8,7 +8,7 @@ const foo = Foo{
88};
99
1010comptime {
11 const another_foo_ptr = @fieldParentPtr(*const Foo, "b", &foo.a);
11 const another_foo_ptr: *const Foo = @fieldParentPtr("b", &foo.a);
1212 _ = another_foo_ptr;
1313}
1414
......@@ -16,5 +16,5 @@ comptime {
1616// backend=stage2
1717// target=native
1818//
19// :11:29: error: field 'b' has index '1' but pointer value is index '0' of struct 'tmp.Foo'
19// :11:41: error: field 'b' has index '1' but pointer value is index '0' of struct 'tmp.Foo'
2020// :1:13: note: struct declared here
test/cases/compile_errors/fieldParentPtr-field_pointer_is_not_pointer.zig+3-3
......@@ -1,12 +1,12 @@
11const Foo = extern struct {
22 a: i32,
33};
4export fn foo(a: i32) *Foo {
5 return @fieldParentPtr(*const Foo, "a", a);
4export fn foo(a: i32) *const Foo {
5 return @fieldParentPtr("a", a);
66}
77
88// error
99// backend=stage2
1010// target=native
1111//
12// :5:45: error: expected pointer type, found 'i32'
12// :5:33: error: expected pointer type, found 'i32'
test/cases/compile_errors/fieldParentPtr-non_pointer.zig+3-3
......@@ -1,10 +1,10 @@
11const Foo = i32;
2export fn foo(a: *i32) *Foo {
3 return @fieldParentPtr(Foo, "a", a);
2export fn foo(a: *i32) Foo {
3 return @fieldParentPtr("a", a);
44}
55
66// error
77// backend=llvm
88// target=native
99//
10// :3:28: error: expected pointer type, found 'i32'
10// :3:12: error: expected pointer type, found 'i32'
test/cases/compile_errors/fieldParentPtr_on_comptime_field.zig+2-2
......@@ -5,7 +5,7 @@ pub export fn entry1() void {
55 @offsetOf(T, "a");
66}
77pub export fn entry2() void {
8 @fieldParentPtr(*T, "a", undefined);
8 @as(*T, @fieldParentPtr("a", undefined));
99}
1010
1111// error
......@@ -13,4 +13,4 @@ pub export fn entry2() void {
1313// target=native
1414//
1515// :5:5: error: no offset available for comptime field
16// :8:25: error: cannot get @fieldParentPtr of a comptime field
16// :8:29: error: cannot get @fieldParentPtr of a comptime field
test/standalone/cmakedefine/build.zig+1-1
......@@ -86,7 +86,7 @@ fn compare_headers(step: *std.Build.Step, prog_node: *std.Progress.Node) !void {
8686 const expected_fmt = "expected_{s}";
8787
8888 for (step.dependencies.items) |config_header_step| {
89 const config_header = @fieldParentPtr(*ConfigHeader, "step", config_header_step);
89 const config_header: *ConfigHeader = @fieldParentPtr("step", config_header_step);
9090
9191 const zig_header_path = config_header.output_file.path orelse @panic("Could not locate header file");
9292