| ... | ... | @@ -274,7 +274,7 @@ pub fn translate( |
| 274 | 274 | errdefer tree_arena.deinit(); |
| 275 | 275 | |
| 276 | 276 | const tree = try tree_arena.allocator.create(ast.Tree); |
| 277 | | tree.* = ast.Tree{ |
| 277 | tree.* = .{ |
| 278 | 278 | .source = undefined, // need to use toOwnedSlice later |
| 279 | 279 | .root_node = undefined, |
| 280 | 280 | .arena_allocator = tree_arena, |
| ... | ... | @@ -644,7 +644,7 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void { |
| 644 | 644 | }; |
| 645 | 645 | |
| 646 | 646 | const node = try c.a().create(ast.Node.VarDecl); |
| 647 | | node.* = ast.Node.VarDecl{ |
| 647 | node.* = .{ |
| 648 | 648 | .doc_comments = null, |
| 649 | 649 | .visib_token = visib_tok, |
| 650 | 650 | .thread_local_token = thread_local_token, |
| ... | ... | @@ -3479,7 +3479,7 @@ fn qualTypeToLog2IntRef(rp: RestorePoint, qt: ZigClangQualType, source_loc: ZigC |
| 3479 | 3479 | // we can perform the log2 now. |
| 3480 | 3480 | const cast_bit_width = math.log2_int(u64, int_bit_width); |
| 3481 | 3481 | const node = try rp.c.a().create(ast.Node.IntegerLiteral); |
| 3482 | | node.* = ast.Node.IntegerLiteral{ |
| 3482 | node.* = .{ |
| 3483 | 3483 | .token = try appendTokenFmt(rp.c, .Identifier, "u{}", .{cast_bit_width}), |
| 3484 | 3484 | }; |
| 3485 | 3485 | return &node.base; |
| ... | ... | @@ -3502,7 +3502,7 @@ fn qualTypeToLog2IntRef(rp: RestorePoint, qt: ZigClangQualType, source_loc: ZigC |
| 3502 | 3502 | const import_fn_call = try transCreateNodeBuiltinFnCall(rp.c, "@import"); |
| 3503 | 3503 | const std_token = try appendToken(rp.c, .StringLiteral, "\"std\""); |
| 3504 | 3504 | const std_node = try rp.c.a().create(ast.Node.StringLiteral); |
| 3505 | | std_node.* = ast.Node.StringLiteral{ |
| 3505 | std_node.* = .{ |
| 3506 | 3506 | .token = std_token, |
| 3507 | 3507 | }; |
| 3508 | 3508 | try import_fn_call.params.push(&std_node.base); |
| ... | ... | @@ -3783,7 +3783,7 @@ fn transCreateNodePrefixOp( |
| 3783 | 3783 | bytes: []const u8, |
| 3784 | 3784 | ) !*ast.Node.PrefixOp { |
| 3785 | 3785 | const node = try c.a().create(ast.Node.PrefixOp); |
| 3786 | | node.* = ast.Node.PrefixOp{ |
| 3786 | node.* = .{ |
| 3787 | 3787 | .op_token = try appendToken(c, op_tok_id, bytes), |
| 3788 | 3788 | .op = op, |
| 3789 | 3789 | .rhs = undefined, // translate and set afterward |
| ... | ... | @@ -3980,7 +3980,7 @@ fn transCreateNodeBoolLiteral(c: *Context, value: bool) !*ast.Node { |
| 3980 | 3980 | fn transCreateNodeArrayInitializer(c: *Context, ty: *ast.Node) !*ast.Node.SuffixOp { |
| 3981 | 3981 | _ = try appendToken(c, .LBrace, "{"); |
| 3982 | 3982 | const node = try c.a().create(ast.Node.SuffixOp); |
| 3983 | | node.* = ast.Node.SuffixOp{ |
| 3983 | node.* = .{ |
| 3984 | 3984 | .lhs = .{ .node = ty }, |
| 3985 | 3985 | .op = .{ |
| 3986 | 3986 | .ArrayInitializer = ast.Node.SuffixOp.Op.InitList.init(c.a()), |
| ... | ... | @@ -3993,7 +3993,7 @@ fn transCreateNodeArrayInitializer(c: *Context, ty: *ast.Node) !*ast.Node.Suffix |
| 3993 | 3993 | fn transCreateNodeStructInitializer(c: *Context, ty: *ast.Node) !*ast.Node.SuffixOp { |
| 3994 | 3994 | _ = try appendToken(c, .LBrace, "{"); |
| 3995 | 3995 | const node = try c.a().create(ast.Node.SuffixOp); |
| 3996 | | node.* = ast.Node.SuffixOp{ |
| 3996 | node.* = .{ |
| 3997 | 3997 | .lhs = .{ .node = ty }, |
| 3998 | 3998 | .op = .{ |
| 3999 | 3999 | .StructInitializer = ast.Node.SuffixOp.Op.InitList.init(c.a()), |
| ... | ... | @@ -4306,7 +4306,7 @@ fn transCreateNodeShiftOp( |
| 4306 | 4306 | cast_node.rparen_token = try appendToken(rp.c, .RParen, ")"); |
| 4307 | 4307 | |
| 4308 | 4308 | const node = try rp.c.a().create(ast.Node.InfixOp); |
| 4309 | | node.* = ast.Node.InfixOp{ |
| 4309 | node.* = .{ |
| 4310 | 4310 | .op_token = op_token, |
| 4311 | 4311 | .lhs = lhs, |
| 4312 | 4312 | .op = op, |
| ... | ... | @@ -4626,8 +4626,7 @@ fn finishTransFnProto( |
| 4626 | 4626 | const type_node = try transQualType(rp, param_qt, source_loc); |
| 4627 | 4627 | |
| 4628 | 4628 | const param_node = try rp.c.a().create(ast.Node.ParamDecl); |
| 4629 | | param_node.* = ast.Node.ParamDecl{ |
| 4630 | | .base = ast.Node{ .id = ast.Node.Id.ParamDecl }, |
| 4629 | param_node.* = .{ |
| 4631 | 4630 | .doc_comments = null, |
| 4632 | 4631 | .comptime_token = null, |
| 4633 | 4632 | .noalias_token = noalias_tok, |
| ... | ... | @@ -4648,8 +4647,7 @@ fn finishTransFnProto( |
| 4648 | 4647 | } |
| 4649 | 4648 | |
| 4650 | 4649 | const var_arg_node = try rp.c.a().create(ast.Node.ParamDecl); |
| 4651 | | var_arg_node.* = ast.Node.ParamDecl{ |
| 4652 | | .base = ast.Node{ .id = ast.Node.Id.ParamDecl }, |
| 4650 | var_arg_node.* = .{ |
| 4653 | 4651 | .doc_comments = null, |
| 4654 | 4652 | .comptime_token = null, |
| 4655 | 4653 | .noalias_token = null, |
| ... | ... | @@ -4774,14 +4772,12 @@ pub fn failDecl(c: *Context, loc: ZigClangSourceLocation, name: []const u8, comp |
| 4774 | 4772 | const semi_tok = try appendToken(c, .Semicolon, ";"); |
| 4775 | 4773 | |
| 4776 | 4774 | const msg_node = try c.a().create(ast.Node.StringLiteral); |
| 4777 | | msg_node.* = ast.Node.StringLiteral{ |
| 4778 | | .base = ast.Node{ .id = ast.Node.Id.StringLiteral }, |
| 4775 | msg_node.* = .{ |
| 4779 | 4776 | .token = msg_tok, |
| 4780 | 4777 | }; |
| 4781 | 4778 | |
| 4782 | 4779 | const call_node = try c.a().create(ast.Node.BuiltinCall); |
| 4783 | | call_node.* = ast.Node.BuiltinCall{ |
| 4784 | | .base = ast.Node{ .id = ast.Node.Id.BuiltinCall }, |
| 4780 | call_node.* = .{ |
| 4785 | 4781 | .builtin_token = builtin_tok, |
| 4786 | 4782 | .params = ast.Node.BuiltinCall.ParamList.init(c.a()), |
| 4787 | 4783 | .rparen_token = rparen_tok, |
| ... | ... | @@ -4789,8 +4785,7 @@ pub fn failDecl(c: *Context, loc: ZigClangSourceLocation, name: []const u8, comp |
| 4789 | 4785 | try call_node.params.push(&msg_node.base); |
| 4790 | 4786 | |
| 4791 | 4787 | const var_decl_node = try c.a().create(ast.Node.VarDecl); |
| 4792 | | var_decl_node.* = ast.Node.VarDecl{ |
| 4793 | | .base = ast.Node{ .id = ast.Node.Id.VarDecl }, |
| 4788 | var_decl_node.* = .{ |
| 4794 | 4789 | .doc_comments = null, |
| 4795 | 4790 | .visib_token = pub_tok, |
| 4796 | 4791 | .thread_local_token = null, |
| ... | ... | @@ -4825,7 +4820,7 @@ fn appendTokenFmt(c: *Context, token_id: Token.Id, comptime format: []const u8, |
| 4825 | 4820 | const new_token = try c.tree.tokens.addOne(); |
| 4826 | 4821 | errdefer c.tree.tokens.shrink(token_index); |
| 4827 | 4822 | |
| 4828 | | new_token.* = Token{ |
| 4823 | new_token.* = .{ |
| 4829 | 4824 | .id = token_id, |
| 4830 | 4825 | .start = start_index, |
| 4831 | 4826 | .end = end_index, |
| ... | ... | @@ -5576,17 +5571,17 @@ fn parseCPrimaryExpr(c: *Context, it: *CTokenList.Iterator, source: []const u8, |
| 5576 | 5571 | // @as(dest, x) ) |
| 5577 | 5572 | |
| 5578 | 5573 | const if_1 = try transCreateNodeIf(c); |
| 5579 | | const type_id_1 = try transCreateNodeBuiltinFnCall(c, "@typeInfo"); |
| 5574 | const type_info_1 = try transCreateNodeBuiltinFnCall(c, "@typeInfo"); |
| 5580 | 5575 | const type_of_1 = try transCreateNodeBuiltinFnCall(c, "@TypeOf"); |
| 5581 | | try type_id_1.params.push(&type_of_1.base); |
| 5576 | try type_info_1.params.push(&type_of_1.base); |
| 5582 | 5577 | try type_of_1.params.push(node_to_cast); |
| 5583 | 5578 | type_of_1.rparen_token = try appendToken(c, .RParen, ")"); |
| 5584 | | type_id_1.rparen_token = try appendToken(c, .RParen, ")"); |
| 5579 | type_info_1.rparen_token = try appendToken(c, .RParen, ")"); |
| 5585 | 5580 | |
| 5586 | 5581 | const cmp_1 = try c.a().create(ast.Node.InfixOp); |
| 5587 | 5582 | cmp_1.* = .{ |
| 5588 | 5583 | .op_token = try appendToken(c, .EqualEqual, "=="), |
| 5589 | | .lhs = &type_id_1.base, |
| 5584 | .lhs = &type_info_1.base, |
| 5590 | 5585 | .op = .EqualEqual, |
| 5591 | 5586 | .rhs = try transCreateNodeEnumLiteral(c, "Pointer"), |
| 5592 | 5587 | }; |
| ... | ... | @@ -5624,17 +5619,17 @@ fn parseCPrimaryExpr(c: *Context, it: *CTokenList.Iterator, source: []const u8, |
| 5624 | 5619 | if_1.@"else" = else_1; |
| 5625 | 5620 | |
| 5626 | 5621 | const if_2 = try transCreateNodeIf(c); |
| 5627 | | const type_id_2 = try transCreateNodeBuiltinFnCall(c, "@typeInfo"); |
| 5622 | const type_info_2 = try transCreateNodeBuiltinFnCall(c, "@typeInfo"); |
| 5628 | 5623 | const type_of_2 = try transCreateNodeBuiltinFnCall(c, "@TypeOf"); |
| 5629 | | try type_id_2.params.push(&type_of_2.base); |
| 5624 | try type_info_2.params.push(&type_of_2.base); |
| 5630 | 5625 | try type_of_2.params.push(node_to_cast); |
| 5631 | 5626 | type_of_2.rparen_token = try appendToken(c, .RParen, ")"); |
| 5632 | | type_id_2.rparen_token = try appendToken(c, .RParen, ")"); |
| 5627 | type_info_2.rparen_token = try appendToken(c, .RParen, ")"); |
| 5633 | 5628 | |
| 5634 | 5629 | const cmp_2 = try c.a().create(ast.Node.InfixOp); |
| 5635 | 5630 | cmp_2.* = .{ |
| 5636 | 5631 | .op_token = try appendToken(c, .EqualEqual, "=="), |
| 5637 | | .lhs = &type_id_2.base, |
| 5632 | .lhs = &type_info_2.base, |
| 5638 | 5633 | .op = .EqualEqual, |
| 5639 | 5634 | .rhs = try transCreateNodeEnumLiteral(c, "Int"), |
| 5640 | 5635 | }; |
| ... | ... | @@ -5646,13 +5641,13 @@ fn parseCPrimaryExpr(c: *Context, it: *CTokenList.Iterator, source: []const u8, |
| 5646 | 5641 | .op = .BoolAnd, |
| 5647 | 5642 | .rhs = undefined, |
| 5648 | 5643 | }; |
| 5649 | | const type_id_3 = try transCreateNodeBuiltinFnCall(c, "@typeInfo"); |
| 5650 | | try type_id_3.params.push(inner_node); |
| 5651 | | type_id_3.rparen_token = try appendToken(c, .LParen, ")"); |
| 5644 | const type_info_3 = try transCreateNodeBuiltinFnCall(c, "@typeInfo"); |
| 5645 | try type_info_3.params.push(inner_node); |
| 5646 | type_info_3.rparen_token = try appendToken(c, .LParen, ")"); |
| 5652 | 5647 | const cmp_3 = try c.a().create(ast.Node.InfixOp); |
| 5653 | 5648 | cmp_3.* = .{ |
| 5654 | 5649 | .op_token = try appendToken(c, .EqualEqual, "=="), |
| 5655 | | .lhs = &type_id_3.base, |
| 5650 | .lhs = &type_info_3.base, |
| 5656 | 5651 | .op = .EqualEqual, |
| 5657 | 5652 | .rhs = try transCreateNodeEnumLiteral(c, "Pointer"), |
| 5658 | 5653 | }; |