| ... | @@ -6,6 +6,7 @@ const Node = ast.Node; | ... | @@ -6,6 +6,7 @@ const Node = ast.Node; |
| 6 | const Tree = ast.Tree; | 6 | const Tree = ast.Tree; |
| 7 | const AstError = ast.Error; | 7 | const AstError = ast.Error; |
| 8 | const TokenIndex = ast.TokenIndex; | 8 | const TokenIndex = ast.TokenIndex; |
| | 9 | const NodeIndex = ast.NodeIndex; |
| 9 | const Token = std.zig.Token; | 10 | const Token = std.zig.Token; |
| 10 | | 11 | |
| 11 | pub const Error = error{ParseError} || Allocator.Error; | 12 | pub const Error = error{ParseError} || Allocator.Error; |
| ... | @@ -70,7 +71,8 @@ const Parser = struct { | ... | @@ -70,7 +71,8 @@ const Parser = struct { |
| 70 | // invalid tokens as it can so this can only be the EOF | 71 | // invalid tokens as it can so this can only be the EOF |
| 71 | const eof_token = p.eatToken(.Eof).?; | 72 | const eof_token = p.eatToken(.Eof).?; |
| 72 | | 73 | |
| 73 | const node = try Node.Root.create(&p.arena.allocator, decls.len, eof_token); | 74 | const decls_len = @intCast(NodeIndex, decls.len); |
| | 75 | const node = try Node.Root.create(&p.arena.allocator, decls_len, eof_token); |
| 74 | std.mem.copy(*Node, node.decls(), decls); | 76 | std.mem.copy(*Node, node.decls(), decls); |
| 75 | | 77 | |
| 76 | return node; | 78 | return node; |
| ... | @@ -545,13 +547,15 @@ const Parser = struct { | ... | @@ -545,13 +547,15 @@ const Parser = struct { |
| 545 | else | 547 | else |
| 546 | R{ .Explicit = return_type_expr.? }; | 548 | R{ .Explicit = return_type_expr.? }; |
| 547 | | 549 | |
| 548 | const fn_proto_node = try Node.FnProto.alloc(&p.arena.allocator, params.len); | 550 | const params_len = @intCast(NodeIndex, params.len); |
| | 551 | |
| | 552 | const fn_proto_node = try Node.FnProto.alloc(&p.arena.allocator, params_len); |
| 549 | fn_proto_node.* = .{ | 553 | fn_proto_node.* = .{ |
| 550 | .doc_comments = null, | 554 | .doc_comments = null, |
| 551 | .visib_token = null, | 555 | .visib_token = null, |
| 552 | .fn_token = fn_token, | 556 | .fn_token = fn_token, |
| 553 | .name_token = name_token, | 557 | .name_token = name_token, |
| 554 | .params_len = params.len, | 558 | .params_len = params_len, |
| 555 | .return_type = return_type, | 559 | .return_type = return_type, |
| 556 | .var_args_token = var_args_token, | 560 | .var_args_token = var_args_token, |
| 557 | .extern_export_inline_token = null, | 561 | .extern_export_inline_token = null, |
| ... | @@ -1195,11 +1199,13 @@ const Parser = struct { | ... | @@ -1195,11 +1199,13 @@ const Parser = struct { |
| 1195 | | 1199 | |
| 1196 | const rbrace = try p.expectToken(.RBrace); | 1200 | const rbrace = try p.expectToken(.RBrace); |
| 1197 | | 1201 | |
| 1198 | const block_node = try Node.Block.alloc(&p.arena.allocator, statements.items.len); | 1202 | const statements_len = @intCast(NodeIndex, statements.items.len); |
| | 1203 | |
| | 1204 | const block_node = try Node.Block.alloc(&p.arena.allocator, statements_len); |
| 1199 | block_node.* = .{ | 1205 | block_node.* = .{ |
| 1200 | .label = null, | 1206 | .label = null, |
| 1201 | .lbrace = lbrace, | 1207 | .lbrace = lbrace, |
| 1202 | .statements_len = statements.items.len, | 1208 | .statements_len = statements_len, |
| 1203 | .rbrace = rbrace, | 1209 | .rbrace = rbrace, |
| 1204 | }; | 1210 | }; |
| 1205 | std.mem.copy(*Node, block_node.statements(), statements.items); | 1211 | std.mem.copy(*Node, block_node.statements(), statements.items); |
| ... | @@ -2844,12 +2850,13 @@ const Parser = struct { | ... | @@ -2844,12 +2850,13 @@ const Parser = struct { |
| 2844 | defer p.gpa.free(members); | 2850 | defer p.gpa.free(members); |
| 2845 | const rbrace = try p.expectToken(.RBrace); | 2851 | const rbrace = try p.expectToken(.RBrace); |
| 2846 | | 2852 | |
| 2847 | const node = try Node.ContainerDecl.alloc(&p.arena.allocator, members.len); | 2853 | const members_len = @intCast(NodeIndex, members.len); |
| | 2854 | const node = try Node.ContainerDecl.alloc(&p.arena.allocator, members_len); |
| 2848 | node.* = .{ | 2855 | node.* = .{ |
| 2849 | .layout_token = null, | 2856 | .layout_token = null, |
| 2850 | .kind_token = container_decl_type.kind_token, | 2857 | .kind_token = container_decl_type.kind_token, |
| 2851 | .init_arg_expr = container_decl_type.init_arg_expr, | 2858 | .init_arg_expr = container_decl_type.init_arg_expr, |
| 2852 | .fields_and_decls_len = members.len, | 2859 | .fields_and_decls_len = members_len, |
| 2853 | .lbrace_token = lbrace, | 2860 | .lbrace_token = lbrace, |
| 2854 | .rbrace_token = rbrace, | 2861 | .rbrace_token = rbrace, |
| 2855 | }; | 2862 | }; |