authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-12-18 00:45:07+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-12-19 12:19:25+02:00
log0eddf0cbc0a88121a67239d5899dca8a39c39cd8
tree3d271460ab2998ba842e350022523fe73929f4a7
parent3db8cffa3b383011471f425983a7e98ad8a46aa5

Sema: fix condition for non-pointer noalias error

Closes #13987

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

src/Sema.zig+3-1
......@@ -8820,7 +8820,9 @@ fn analyzeParameter(
88208820 };
88218821 return sema.failWithOwnedErrorMsg(msg);
88228822 }
8823 if (!this_generic and is_noalias and !param.ty.isPtrAtRuntime()) {
8823 if (!sema.is_generic_instantiation and !this_generic and is_noalias and
8824 !(param.ty.zigTypeTag() == .Pointer or param.ty.isPtrLikeOptional()))
8825 {
88248826 return sema.fail(block, param_src, "non-pointer parameter declared noalias", .{});
88258827 }
88268828}
test/cases/compile_errors/noalias_on_non_pointer_param.zig+6
......@@ -1,6 +1,12 @@
11fn f(noalias x: i32) void { _ = x; }
22export fn entry() void { f(1234); }
33
4fn generic(comptime T: type, noalias _: [*]T, noalias _: [*]const T, _: usize) void {}
5comptime { _ = generic; }
6
7fn slice(noalias _: []u8) void {}
8comptime { _ = slice; }
9
410// error
511// backend=stage2
612// target=native