mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 04:48:20 +00:00
Sema: ensure args to inline comptime args are comptime-known
Closes #14413
This commit is contained in:
parent
92dfc07489
commit
720d82721f
@ -6879,6 +6879,8 @@ fn analyzeInlineCallArg(
|
||||
if (err == error.AnalysisFail and param_block.comptime_reason != null) try param_block.comptime_reason.?.explain(sema, sema.err);
|
||||
return err;
|
||||
};
|
||||
} else if (!is_comptime_call and zir_tags[inst] == .param_comptime) {
|
||||
_ = try sema.resolveConstMaybeUndefVal(arg_block, arg_src, uncasted_arg, "parameter is comptime");
|
||||
}
|
||||
const casted_arg = sema.coerceExtra(arg_block, param_ty, uncasted_arg, arg_src, .{ .param_src = .{
|
||||
.func_inst = func_inst,
|
||||
@ -6952,6 +6954,9 @@ fn analyzeInlineCallArg(
|
||||
.val = arg_val,
|
||||
};
|
||||
} else {
|
||||
if (zir_tags[inst] == .param_anytype_comptime) {
|
||||
_ = try sema.resolveConstMaybeUndefVal(arg_block, arg_src, uncasted_arg, "parameter is comptime");
|
||||
}
|
||||
sema.inst_map.putAssumeCapacityNoClobber(inst, uncasted_arg);
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
inline fn needComptime(comptime a: u64) void {
|
||||
if (a != 0) @compileError("foo");
|
||||
}
|
||||
fn acceptRuntime(value: u64) void {
|
||||
needComptime(value);
|
||||
}
|
||||
pub export fn entry() void {
|
||||
var value: u64 = 0;
|
||||
acceptRuntime(value);
|
||||
}
|
||||
|
||||
// error
|
||||
// backend=stage2
|
||||
// target=native
|
||||
//
|
||||
// :5:18: error: unable to resolve comptime value
|
||||
// :5:18: note: parameter is comptime
|
||||
Loading…
x
Reference in New Issue
Block a user