aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-09-19 17:50:58 +0300
committerVeikka Tuominen <git@vexu.eu>2022-09-20 00:50:13 +0300
commit3e80aa9079cfad8c95f506b1eb644daeed6cbb7b (patch)
tree02ef7d3e94b3f02dc1fc8899a390c6c412f6b8ce /src/Sema.zig
parent540130650f843f0c6aa79c2a2f29e79b33846994 (diff)
downloadzig-3e80aa9079cfad8c95f506b1eb644daeed6cbb7b.tar.gz
zig-3e80aa9079cfad8c95f506b1eb644daeed6cbb7b.zip
Sema: validate `@alignOf` type
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 773b7aa66c..2b8705339c 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -16492,6 +16492,9 @@ fn zirAlignOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
const inst_data = sema.code.instructions.items(.data)[inst].un_node;
const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
const ty = try sema.resolveType(block, operand_src, inst_data.operand);
+ if (ty.isNoReturn()) {
+ return sema.fail(block, operand_src, "no align available for type '{}'", .{ty.fmt(sema.mod)});
+ }
const target = sema.mod.getTarget();
const val = try ty.lazyAbiAlignment(target, sema.arena);
if (val.tag() == .lazy_align) {