aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorBogdan Romanyuk <65823030+wrongnull@users.noreply.github.com>2023-12-11 18:52:19 +0300
committerGitHub <noreply@github.com>2023-12-11 17:52:19 +0200
commitf88b523065fbb8afbd723fd6e803ace0334b713c (patch)
tree38b1e58905d644ef83592db39b9b4e6402e30a68 /src/Sema.zig
parent5bbacb0c8ce1aa59af5e898e255c544786059d06 (diff)
downloadzig-f88b523065fbb8afbd723fd6e803ace0334b713c.tar.gz
zig-f88b523065fbb8afbd723fd6e803ace0334b713c.zip
Sema: forbid @breakpoint from being called at comptime
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 752a5b1023..160a531d92 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -1292,9 +1292,7 @@ fn analyzeBodyInner(
continue;
},
.breakpoint => {
- if (!block.is_comptime) {
- _ = try block.addNoOp(.breakpoint);
- }
+ try sema.zirBreakpoint(block, extended);
i += 1;
continue;
},
@@ -5620,6 +5618,13 @@ fn zirTrap(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Zir.In
return always_noreturn;
}
+fn zirBreakpoint(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) CompileError!void {
+ const src = LazySrcLoc.nodeOffset(@bitCast(extended.operand));
+ if (block.is_comptime)
+ return sema.fail(block, src, "encountered @breakpoint at comptime", .{});
+ _ = try block.addNoOp(.breakpoint);
+}
+
fn zirLoop(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref {
const tracy = trace(@src());
defer tracy.end();