authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-04-27 22:20:25-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-04-27 22:20:25-07:00
logeb9c29eb817a24e5326b9a63ebf7265d3b2bad2c
treeaa113abcb095ab96a652be77f2d5b6990ab8a4c0
parent3d9e4edb57fdd54bca5280dc0fb6ea447e5d0407

AstGen: fix function src hash not including body


1 files changed, 34 insertions(+), 33 deletions(-)

src/AstGen.zig+34-33
...@@ -2638,6 +2638,7 @@ fn fnDecl(...@@ -2638,6 +2638,7 @@ fn fnDecl(
2638 astgen: *AstGen,2638 astgen: *AstGen,
2639 gz: *GenZir,2639 gz: *GenZir,
2640 wip_decls: *WipDecls,2640 wip_decls: *WipDecls,
2641 decl_node: ast.Node.Index,
2641 body_node: ast.Node.Index,2642 body_node: ast.Node.Index,
2642 fn_proto: ast.full.FnProto,2643 fn_proto: ast.full.FnProto,
2643) InnerError!void {2644) InnerError!void {
...@@ -2851,7 +2852,7 @@ fn fnDecl(...@@ -2851,7 +2852,7 @@ fn fnDecl(
28512852
2852 try wip_decls.payload.ensureUnusedCapacity(gpa, 8);2853 try wip_decls.payload.ensureUnusedCapacity(gpa, 8);
2853 {2854 {
2854 const contents_hash = std.zig.hashSrc(tree.getNodeSource(fn_proto.ast.proto_node));2855 const contents_hash = std.zig.hashSrc(tree.getNodeSource(decl_node));
2855 const casted = @bitCast([4]u32, contents_hash);2856 const casted = @bitCast([4]u32, contents_hash);
2856 wip_decls.payload.appendSliceAssumeCapacity(&casted);2857 wip_decls.payload.appendSliceAssumeCapacity(&casted);
2857 }2858 }
...@@ -3207,20 +3208,20 @@ fn structDeclInner(...@@ -3207,20 +3208,20 @@ fn structDeclInner(
3207 switch (node_tags[fn_proto]) {3208 switch (node_tags[fn_proto]) {
3208 .fn_proto_simple => {3209 .fn_proto_simple => {
3209 var params: [1]ast.Node.Index = undefined;3210 var params: [1]ast.Node.Index = undefined;
3210 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProtoSimple(&params, fn_proto));3211 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProtoSimple(&params, fn_proto));
3211 continue;3212 continue;
3212 },3213 },
3213 .fn_proto_multi => {3214 .fn_proto_multi => {
3214 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProtoMulti(fn_proto));3215 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProtoMulti(fn_proto));
3215 continue;3216 continue;
3216 },3217 },
3217 .fn_proto_one => {3218 .fn_proto_one => {
3218 var params: [1]ast.Node.Index = undefined;3219 var params: [1]ast.Node.Index = undefined;
3219 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProtoOne(&params, fn_proto));3220 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProtoOne(&params, fn_proto));
3220 continue;3221 continue;
3221 },3222 },
3222 .fn_proto => {3223 .fn_proto => {
3223 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProto(fn_proto));3224 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProto(fn_proto));
3224 continue;3225 continue;
3225 },3226 },
3226 else => unreachable,3227 else => unreachable,
...@@ -3228,20 +3229,20 @@ fn structDeclInner(...@@ -3228,20 +3229,20 @@ fn structDeclInner(
3228 },3229 },
3229 .fn_proto_simple => {3230 .fn_proto_simple => {
3230 var params: [1]ast.Node.Index = undefined;3231 var params: [1]ast.Node.Index = undefined;
3231 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProtoSimple(&params, member_node));3232 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProtoSimple(&params, member_node));
3232 continue;3233 continue;
3233 },3234 },
3234 .fn_proto_multi => {3235 .fn_proto_multi => {
3235 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProtoMulti(member_node));3236 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProtoMulti(member_node));
3236 continue;3237 continue;
3237 },3238 },
3238 .fn_proto_one => {3239 .fn_proto_one => {
3239 var params: [1]ast.Node.Index = undefined;3240 var params: [1]ast.Node.Index = undefined;
3240 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProtoOne(&params, member_node));3241 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProtoOne(&params, member_node));
3241 continue;3242 continue;
3242 },3243 },
3243 .fn_proto => {3244 .fn_proto => {
3244 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProto(member_node));3245 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProto(member_node));
3245 continue;3246 continue;
3246 },3247 },
32473248
...@@ -3410,20 +3411,20 @@ fn unionDeclInner(...@@ -3410,20 +3411,20 @@ fn unionDeclInner(
3410 switch (node_tags[fn_proto]) {3411 switch (node_tags[fn_proto]) {
3411 .fn_proto_simple => {3412 .fn_proto_simple => {
3412 var params: [1]ast.Node.Index = undefined;3413 var params: [1]ast.Node.Index = undefined;
3413 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProtoSimple(&params, fn_proto));3414 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProtoSimple(&params, fn_proto));
3414 continue;3415 continue;
3415 },3416 },
3416 .fn_proto_multi => {3417 .fn_proto_multi => {
3417 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProtoMulti(fn_proto));3418 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProtoMulti(fn_proto));
3418 continue;3419 continue;
3419 },3420 },
3420 .fn_proto_one => {3421 .fn_proto_one => {
3421 var params: [1]ast.Node.Index = undefined;3422 var params: [1]ast.Node.Index = undefined;
3422 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProtoOne(&params, fn_proto));3423 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProtoOne(&params, fn_proto));
3423 continue;3424 continue;
3424 },3425 },
3425 .fn_proto => {3426 .fn_proto => {
3426 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProto(fn_proto));3427 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProto(fn_proto));
3427 continue;3428 continue;
3428 },3429 },
3429 else => unreachable,3430 else => unreachable,
...@@ -3431,20 +3432,20 @@ fn unionDeclInner(...@@ -3431,20 +3432,20 @@ fn unionDeclInner(
3431 },3432 },
3432 .fn_proto_simple => {3433 .fn_proto_simple => {
3433 var params: [1]ast.Node.Index = undefined;3434 var params: [1]ast.Node.Index = undefined;
3434 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProtoSimple(&params, member_node));3435 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProtoSimple(&params, member_node));
3435 continue;3436 continue;
3436 },3437 },
3437 .fn_proto_multi => {3438 .fn_proto_multi => {
3438 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProtoMulti(member_node));3439 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProtoMulti(member_node));
3439 continue;3440 continue;
3440 },3441 },
3441 .fn_proto_one => {3442 .fn_proto_one => {
3442 var params: [1]ast.Node.Index = undefined;3443 var params: [1]ast.Node.Index = undefined;
3443 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProtoOne(&params, member_node));3444 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProtoOne(&params, member_node));
3444 continue;3445 continue;
3445 },3446 },
3446 .fn_proto => {3447 .fn_proto => {
3447 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProto(member_node));3448 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProto(member_node));
3448 continue;3449 continue;
3449 },3450 },
34503451
...@@ -3759,20 +3760,20 @@ fn containerDecl(...@@ -3759,20 +3760,20 @@ fn containerDecl(
3759 switch (node_tags[fn_proto]) {3760 switch (node_tags[fn_proto]) {
3760 .fn_proto_simple => {3761 .fn_proto_simple => {
3761 var params: [1]ast.Node.Index = undefined;3762 var params: [1]ast.Node.Index = undefined;
3762 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProtoSimple(&params, fn_proto));3763 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProtoSimple(&params, fn_proto));
3763 continue;3764 continue;
3764 },3765 },
3765 .fn_proto_multi => {3766 .fn_proto_multi => {
3766 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProtoMulti(fn_proto));3767 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProtoMulti(fn_proto));
3767 continue;3768 continue;
3768 },3769 },
3769 .fn_proto_one => {3770 .fn_proto_one => {
3770 var params: [1]ast.Node.Index = undefined;3771 var params: [1]ast.Node.Index = undefined;
3771 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProtoOne(&params, fn_proto));3772 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProtoOne(&params, fn_proto));
3772 continue;3773 continue;
3773 },3774 },
3774 .fn_proto => {3775 .fn_proto => {
3775 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProto(fn_proto));3776 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProto(fn_proto));
3776 continue;3777 continue;
3777 },3778 },
3778 else => unreachable,3779 else => unreachable,
...@@ -3780,20 +3781,20 @@ fn containerDecl(...@@ -3780,20 +3781,20 @@ fn containerDecl(
3780 },3781 },
3781 .fn_proto_simple => {3782 .fn_proto_simple => {
3782 var params: [1]ast.Node.Index = undefined;3783 var params: [1]ast.Node.Index = undefined;
3783 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProtoSimple(&params, member_node));3784 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProtoSimple(&params, member_node));
3784 continue;3785 continue;
3785 },3786 },
3786 .fn_proto_multi => {3787 .fn_proto_multi => {
3787 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProtoMulti(member_node));3788 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProtoMulti(member_node));
3788 continue;3789 continue;
3789 },3790 },
3790 .fn_proto_one => {3791 .fn_proto_one => {
3791 var params: [1]ast.Node.Index = undefined;3792 var params: [1]ast.Node.Index = undefined;
3792 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProtoOne(&params, member_node));3793 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProtoOne(&params, member_node));
3793 continue;3794 continue;
3794 },3795 },
3795 .fn_proto => {3796 .fn_proto => {
3796 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProto(member_node));3797 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProto(member_node));
3797 continue;3798 continue;
3798 },3799 },
37993800
...@@ -3924,20 +3925,20 @@ fn containerDecl(...@@ -3924,20 +3925,20 @@ fn containerDecl(
3924 switch (node_tags[fn_proto]) {3925 switch (node_tags[fn_proto]) {
3925 .fn_proto_simple => {3926 .fn_proto_simple => {
3926 var params: [1]ast.Node.Index = undefined;3927 var params: [1]ast.Node.Index = undefined;
3927 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProtoSimple(&params, fn_proto));3928 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProtoSimple(&params, fn_proto));
3928 continue;3929 continue;
3929 },3930 },
3930 .fn_proto_multi => {3931 .fn_proto_multi => {
3931 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProtoMulti(fn_proto));3932 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProtoMulti(fn_proto));
3932 continue;3933 continue;
3933 },3934 },
3934 .fn_proto_one => {3935 .fn_proto_one => {
3935 var params: [1]ast.Node.Index = undefined;3936 var params: [1]ast.Node.Index = undefined;
3936 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProtoOne(&params, fn_proto));3937 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProtoOne(&params, fn_proto));
3937 continue;3938 continue;
3938 },3939 },
3939 .fn_proto => {3940 .fn_proto => {
3940 try astgen.fnDecl(gz, &wip_decls, body, tree.fnProto(fn_proto));3941 try astgen.fnDecl(gz, &wip_decls, member_node, body, tree.fnProto(fn_proto));
3941 continue;3942 continue;
3942 },3943 },
3943 else => unreachable,3944 else => unreachable,
...@@ -3945,20 +3946,20 @@ fn containerDecl(...@@ -3945,20 +3946,20 @@ fn containerDecl(
3945 },3946 },
3946 .fn_proto_simple => {3947 .fn_proto_simple => {
3947 var params: [1]ast.Node.Index = undefined;3948 var params: [1]ast.Node.Index = undefined;
3948 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProtoSimple(&params, member_node));3949 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProtoSimple(&params, member_node));
3949 continue;3950 continue;
3950 },3951 },
3951 .fn_proto_multi => {3952 .fn_proto_multi => {
3952 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProtoMulti(member_node));3953 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProtoMulti(member_node));
3953 continue;3954 continue;
3954 },3955 },
3955 .fn_proto_one => {3956 .fn_proto_one => {
3956 var params: [1]ast.Node.Index = undefined;3957 var params: [1]ast.Node.Index = undefined;
3957 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProtoOne(&params, member_node));3958 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProtoOne(&params, member_node));
3958 continue;3959 continue;
3959 },3960 },
3960 .fn_proto => {3961 .fn_proto => {
3961 try astgen.fnDecl(gz, &wip_decls, 0, tree.fnProto(member_node));3962 try astgen.fnDecl(gz, &wip_decls, member_node, 0, tree.fnProto(member_node));
3962 continue;3963 continue;
3963 },3964 },
39643965