authorgravatar for r00ster91@proton.meWooster <r00ster91@proton.me> 2023-01-29 23:25:31+01:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2023-01-31 17:15:34+02:00
log17404f8e6edea28fc70e074fd75101e1ed48b620
tree46bbfde37de9f02406089c0dbf291f18714aa0e2
parentd6b430b520103fb6691b2c18ae06c2f2a360e806

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


2 files changed, 16 insertions(+), 1 deletions(-)

src/Sema.zig+6-1
......@@ -6446,7 +6446,12 @@ fn analyzeCall(
64466446 .extern_fn => return sema.fail(block, call_src, "{s} call of extern function", .{
64476447 @as([]const u8, if (is_comptime_call) "comptime" else "inline"),
64486448 }),
6449 else => unreachable,
6449 else => {
6450 assert(callee_ty.isPtrAtRuntime());
6451 return sema.fail(block, call_src, "{s} call of function pointer", .{
6452 @as([]const u8, if (is_comptime_call) "comptime" else "inline"),
6453 });
6454 },
64506455 };
64516456 if (func_ty_info.is_var_args) {
64526457 return sema.fail(block, call_src, "{s} call of variadic function", .{
test/cases/compile_errors/comptime_call_of_function_pointer.zig created+10
......@@ -0,0 +1,10 @@
1export fn entry() void {
2 const fn_ptr = @intToPtr(*align(1) fn () void, 0xffd2);
3 comptime fn_ptr();
4}
5
6// error
7// backend=stage2
8// target=native
9//
10// :3:20: error: comptime call of function pointer