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