zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 0eddf0cbc0a88121a67239d5899dca8a39c39cd8 (tree)
parent 3db8cffa3b383011471f425983a7e98ad8a46aa5
Author: Veikka Tuominen <git@vexu.eu>
Date:   Sun, 18 Dec 2022 00:45:07 +0200

Sema: fix condition for non-pointer noalias error

Closes #13987

Diffstat:
Msrc/Sema.zig | 4+++-
Mtest/cases/compile_errors/noalias_on_non_pointer_param.zig | 6++++++
2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/Sema.zig b/src/Sema.zig @@ -8820,7 +8820,9 @@ fn analyzeParameter( }; return sema.failWithOwnedErrorMsg(msg); } - if (!this_generic and is_noalias and !param.ty.isPtrAtRuntime()) { + if (!sema.is_generic_instantiation and !this_generic and is_noalias and + !(param.ty.zigTypeTag() == .Pointer or param.ty.isPtrLikeOptional())) + { return sema.fail(block, param_src, "non-pointer parameter declared noalias", .{}); } } diff --git a/test/cases/compile_errors/noalias_on_non_pointer_param.zig b/test/cases/compile_errors/noalias_on_non_pointer_param.zig @@ -1,6 +1,12 @@ fn f(noalias x: i32) void { _ = x; } export fn entry() void { f(1234); } +fn generic(comptime T: type, noalias _: [*]T, noalias _: [*]const T, _: usize) void {} +comptime { _ = generic; } + +fn slice(noalias _: []u8) void {} +comptime { _ = slice; } + // error // backend=stage2 // target=native