aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorTw <tw19881113@gmail.com>2024-12-06 11:42:09 +0800
committerAlex Rønne Petersen <alex@alexrp.com>2025-02-17 05:28:11 +0100
commitd7b93c78769360c954a364613c1c1b382020da0a (patch)
tree363328ae0821551f48c9079ef8fd84c38f2835cf /src/Sema.zig
parent86064e66d60241ae1c56c6852ebd1ad880edfcce (diff)
downloadzig-d7b93c78769360c954a364613c1c1b382020da0a.tar.gz
zig-d7b93c78769360c954a364613c1c1b382020da0a.zip
Sema: make source location in checkCallConvSupportsVarArgs more meaningful
As calling convention may not be specified explicitly in the source, so use va_arg's location instead. Signed-off-by: Tw <tw19881113@gmail.com>
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 16765d1a89..c513962d89 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -9669,7 +9669,13 @@ fn funcCommon(
if (is_generic) {
return sema.fail(block, func_src, "generic function cannot be variadic", .{});
}
- try sema.checkCallConvSupportsVarArgs(block, cc_src, cc);
+ const va_args_src = block.src(.{
+ .fn_proto_param = .{
+ .fn_proto_node_offset = src_node_offset,
+ .param_index = @intCast(block.params.len), // va_arg must be the last parameter
+ },
+ });
+ try sema.checkCallConvSupportsVarArgs(block, va_args_src, cc);
}
const ret_poison = bare_return_type.isGenericPoison();