aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index f5ee909caf..fdaad29995 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -10188,9 +10188,15 @@ fn analyzeAs(
const dest_ty_tag = dest_ty.zigTypeTagOrPoison(mod) catch |err| switch (err) {
error.GenericPoison => return operand,
};
+
+ if (dest_ty_tag == .Opaque) {
+ return sema.fail(block, src, "cannot cast to opaque type '{}'", .{dest_ty.fmt(pt)});
+ }
+
if (dest_ty_tag == .NoReturn) {
return sema.fail(block, src, "cannot cast to noreturn", .{});
}
+
const is_ret = if (zir_dest_type.toIndex()) |ptr_index|
sema.code.instructions.items(.tag)[@intFromEnum(ptr_index)] == .ret_type
else