diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-07-17 17:03:52 +0300 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-07-21 12:21:30 -0700 |
| commit | 8feb3987608945040c955bd7b24be3841ebf74ac (patch) | |
| tree | 192a1ec257081c7f4771e59ee1fc3e499ae7cf6f /src/Module.zig | |
| parent | d851b24180fdf2b622b06e9a35e315541fb10aa1 (diff) | |
| download | zig-8feb3987608945040c955bd7b24be3841ebf74ac.tar.gz zig-8feb3987608945040c955bd7b24be3841ebf74ac.zip | |
Sema: validate function parameter types and return type
Diffstat (limited to 'src/Module.zig')
| -rw-r--r-- | src/Module.zig | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/Module.zig b/src/Module.zig index b174b88596..c9d956edcf 100644 --- a/src/Module.zig +++ b/src/Module.zig @@ -2439,6 +2439,7 @@ pub const SrcLoc = struct { .node_offset_fn_type_ret_ty => |node_off| { const tree = try src_loc.file_scope.getTree(gpa); + const node_datas = tree.nodes.items(.data); const node_tags = tree.nodes.items(.tag); const node = src_loc.declRelativeToNodeIndex(node_off); var params: [1]Ast.Node.Index = undefined; @@ -2447,6 +2448,16 @@ pub const SrcLoc = struct { .fn_proto_multi => tree.fnProtoMulti(node), .fn_proto_one => tree.fnProtoOne(¶ms, node), .fn_proto => tree.fnProto(node), + .fn_decl => blk: { + const fn_proto = node_datas[node].lhs; + break :blk switch (node_tags[fn_proto]) { + .fn_proto_simple => tree.fnProtoSimple(¶ms, fn_proto), + .fn_proto_multi => tree.fnProtoMulti(fn_proto), + .fn_proto_one => tree.fnProtoOne(¶ms, fn_proto), + .fn_proto => tree.fnProto(fn_proto), + else => unreachable, + }; + }, else => unreachable, }; return nodeToSpan(tree, full.ast.return_type); |
