aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorLoris Cro <kappaloris@gmail.com>2025-02-13 20:05:00 +0100
committerAndrew Kelley <andrew@ziglang.org>2025-02-26 14:41:33 -0500
commitfff8eff2bd0cc36b192d0ab43b522161227c3c2d (patch)
tree13980a602ac4a993da81002010ef6e6fa65a2eea /src/Sema.zig
parent8957b2707464a4dc7f0572bfc08fd104408bc8a3 (diff)
downloadzig-fff8eff2bd0cc36b192d0ab43b522161227c3c2d.tar.gz
zig-fff8eff2bd0cc36b192d0ab43b522161227c3c2d.zip
initial implementation of `@deprecated`
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 9e729a17ea..e68177433d 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -1091,6 +1091,7 @@ fn analyzeBodyInner(
const map = &sema.inst_map;
const tags = sema.code.instructions.items(.tag);
const datas = sema.code.instructions.items(.data);
+ const mod = block.ownerModule();
var crash_info = crash_report.prepAnalyzeBody(sema, block, body);
crash_info.push();
@@ -1341,6 +1342,15 @@ fn analyzeBodyInner(
.extended => ext: {
const extended = datas[@intFromEnum(inst)].extended;
break :ext switch (extended.opcode) {
+ .deprecated => {
+ if (!mod.allow_deprecated) {
+ const src_node: i32 = @bitCast(extended.operand);
+ const src = block.nodeOffset(src_node);
+ return sema.fail(block, src, "found deprecated code", .{});
+ }
+
+ break :ext .void_value;
+ },
// zig fmt: off
.struct_decl => try sema.zirStructDecl( block, extended, inst),
.enum_decl => try sema.zirEnumDecl( block, extended, inst),