Sema: emit compile error for comptime or inline call of function pointer

This commit is contained in:
r00ster91 2023-01-29 23:25:31 +01:00 committed by Veikka Tuominen
parent d6b430b520
commit 17404f8e6e
2 changed files with 16 additions and 1 deletions

View File

@ -6446,7 +6446,12 @@ fn analyzeCall(
.extern_fn => return sema.fail(block, call_src, "{s} call of extern function", .{
@as([]const u8, if (is_comptime_call) "comptime" else "inline"),
}),
else => unreachable,
else => {
assert(callee_ty.isPtrAtRuntime());
return sema.fail(block, call_src, "{s} call of function pointer", .{
@as([]const u8, if (is_comptime_call) "comptime" else "inline"),
});
},
};
if (func_ty_info.is_var_args) {
return sema.fail(block, call_src, "{s} call of variadic function", .{

View File

@ -0,0 +1,10 @@
export fn entry() void {
const fn_ptr = @intToPtr(*align(1) fn () void, 0xffd2);
comptime fn_ptr();
}
// error
// backend=stage2
// target=native
//
// :3:20: error: comptime call of function pointer