| ... | @@ -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( |
| 2851 | | 2852 | |
| 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 | }, |
| 3247 | | 3248 | |
| ... | @@ -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 | }, |
| 3450 | | 3451 | |
| ... | @@ -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 | }, |
| 3799 | | 3800 | |
| ... | @@ -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 | }, |
| 3964 | | 3965 | |